2

我从github下载了 Drupal-iOS-SDK, 还从这里下载了 AFNetworking 文件。

然后我将文件添加到我的项目中,但它显示了一个奇怪的错误

不兼容的块指针类型将“void (^)(NSInteger, NSInteger, NSInteger)”发送到“void (^)(NSInteger, long long, long long)”类型的参数

对于这段代码:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
        NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
    }];

有谁知道这意味着什么?

4

1 回答 1

2

您将三个NSIntegers 作为参数发送到setUploadProgressBlock预期的一个NSUInteger(无符号整数)和两个long long参数

totalBytesWritten并且totalBytesExpectedToWrite需要是类型long long,因为这是它们的定义方式,而不是`NSInteger's。您的代码应如下所示:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];

您可能还想相应地修改您的 NSLog,因为它已设置为,long long因此编译器不会抱怨。

NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
于 2012-09-10T11:20:10.510 回答