Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AFNetworking 2.0 POST issue | replacing deprecated multipartFormRequestWithMethod:path:parameters

I am migrating an iOS app from Xcode4 to Xcode7 (beta 4). Dependency to AFNetworking is automatically resolved via Pods. AFNetworking 2.0 is not backwards compatible with AFNetworking 1.0 so I modified part of the source. Here is

  • File structure
  • Log and
  • the related Source code

Issue below

/Api/ApiClient.m::: error: unexpected interface name 'NSData': expected expression
                NSData* callerData = [@"http://nikyotis.xyz" dataUsingEncoding:NSUTF8StringEncoding];
                ^

/Api/ApiClient.m::: error: use of undeclared identifier 'callerData'
                NSData* callerData = [@"http://nikyotis.xyz" dataUsingEncoding:NSUTF8StringEncoding];

at line 280 of the example above

enter image description here

Substituting NSData with NSString results in the error below

enter image description here

Original AFNetwork-1.0 code below

enter image description here

I try to migrate to AFNetwork-2.0 by replacing the routine with either //1

enter image description here

or //2

enter image description here

without any success

like image 670
Nikos Yotis Avatar asked Jul 29 '15 10:07

Nikos Yotis


2 Answers

I think the NSData compiler error is a red herring. The problem is that you are only provided a code block for the 'failure' argument rather than the 'constructingBodyWithBlock' argument.

Try something like:

NSMutableURLRequest* request = 
[ [ApiManager sharedManager] 
POST:@"/v1/exec"
    parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
        {
            // Code to form the body of the form is here

            //NSData* callerData = [[NSData alloc] init];
            NSData* callerData = [@"http://nikyotis.xyz" dataUsingEncoding:NSUTF8StringEncoding];
            [formData appendPartWithFormData:callerData name:@"caller"];
            [formData appendPartWithFileData:fontData name:@"front" fileName:@"front" mimeType:@"application/octet-stream"];
            [formData appendPartWithFileData:sideData name:@"side" fileName:@"side" mimeType:@"application/octet-stream"];
        }
       success:^(AFHTTPRequestOperation *operation, id responseObject)
        {
            // Operation success code goes here
        }

       failure:^(AFHTTPRequestOperation *operation, NSError *error)
        {
            // Operation failed code goes here
        }
 ];

apologies for any formatting issues - having markdown trouble.

like image 100
Richard Groves Avatar answered Oct 20 '22 00:10

Richard Groves


problem was the unstable (beta)

OS X El Capitan 10.11 Beta (15A244d) | Xcode Version 7.0 beta 4 (7A165t)

I was using. what i was expecting really...

the code above runs fine on stable Yosemite n Xcode 6.4

like image 36
Nikos Yotis Avatar answered Oct 20 '22 01:10

Nikos Yotis