使用未声明的标识符 AFHTTPClient

Posted

技术标签:

【中文标题】使用未声明的标识符 AFHTTPClient【英文标题】:Use of undeclared identifier AFHTTPClient 【发布时间】:2014-01-28 14:32:05 【问题描述】:

您好,我正在尝试编译以下代码,但出现错误 Use of undeclered identifier AFHTTPClient:

NSData* fileNameData = [fileName dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *sendDictionary =
    [NSDictionary dictionaryWithObject:fileNameData forKey:@"fileName"];

AFHTTPClient *httpClient =
    [[AFHTTPClient alloc] initWithBaseURL:@"http://www.olcayertas.com"];

NSMutableURLRequest *afRequest =
    [httpClient multipartFormRequestWithMethod:@"POST"
        path:@"/photos"
        parameters:sendDictionary
        constructingBodyWithBlock:^(id <AFMultipartFormData>formData) 
            [formData appendPartWithFileData:photoImageData
                name:self.fileName.text
                fileName:filePath
                mimeType:@"image/jpeg"];
        ];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) 

    NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);

];

[operation setCompletionBlock:^
    //NSLog(@"%@", operation.responseString); //Gives a very scary warning
];

[operation start];

我正在使用 CocoaPods,这是我的 pod 文件:

platform :ios, '7'
pod 'AFNetworking', '~> 2.0'
pod 'AFNetworking/NSURLSession', '~> 2.0'

【问题讨论】:

你的#imports 是什么? AfNetworking 2.0 删除 AFHTTPClient 见***.com/questions/19503750/… 【参考方案1】:

您包含 AFNetworking 2.0,但 AFHTTPClient 在 2.0 中不存在 - 这是 1.0 的功能。检查migration guide,但AFHTTPClient 已被AFHTTPRequestOperationManagerAFHTTPSessionManager 替换。

还可以查看 2.0 的 example app - AFAppDotNetAPIClient 现在是 AFHTTPSessionManager 的子类。

【讨论】:

【参考方案2】:

在 AFNetworking 3.0 中,您需要使用 AFHTTPSessionManager 而不是 AFHTTPRequestOperationManager,因为 AFHTTPRequestOperationManager 已被删除

【讨论】:

以上是关于使用未声明的标识符 AFHTTPClient的主要内容,如果未能解决你的问题,请参考以下文章

使用未声明的类型“DKAsset”,使用未解析的标识符“DKImagePickerController”?

使用声明[关闭]的未声明标识符'k'

使用未声明的标识符“top”;您指的是 'pop' 吗?

如何处理`使用未声明的标识符'UIDevice'`

在 CoreLocation 中使用未声明的标识符错误

使用未声明的标识符“NSBundle”