0

我想将一些照片从我的 iPhone 应用程序发送到我的 Facebook 墙:

for (int i=0; i<_pageImages.count; i++) {   
    UIImage *img = [self.pageImages objectAtIndex:i];
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    [params setObject:@"my custom message" forKey:@"message"];
    [params setObject:img forKey:@"picture"];

    [self performPublishAction:^{
        [FBRequestConnection startWithGraphPath:@"me/photos" parameters:params HTTPMethod:@"POST"
            completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                [self showAlert:@"Photo med text Post" result:result error:error];
        }];
    }];
}

该代码完全有效,但正如您在代码中看到的 Alert'll 将显示_pageImages.count时间。我可以很容易地删除它。

我认为这可能是发布照片列表的更好方法。你可以帮帮我吗?

4

1 回答 1

0

如果您的意图是只显示一次警报,您可以初始化您正在上传的图像的全局计数,而不是调用 showAlert:result:error 方法,您可以调用一个新方法。新方法将处理结果并增加已处理图像的本地计数。当本地计数达到全局计数时,您可以显示警报。

您还可以考虑批量处理您的请求,请参阅https://developers.facebook.com/docs/howtos/batch-requests-ios-sdk/

您也许可以将循环逻辑更改为:

// Before the loop
FBRequestConnection *connection = [[FBRequestConnection alloc] init];

// Loop through images, set up the request
for (int i=0; i<_pageImages.count; i++) { 
    ....
    FBRequest *request = [FBRequest requestWithGraphPath:@"me/photos"
                     parameters:params
                     HTTPMethod:@"POST"];
    [connection addRequest:request
         completionHandler:
             ^(FBRequestConnection *connection, id result, NSError *error) {
                 // Call your method to check results and keep count
                 // of the callbacks before displaying the final output
    }];
}

// After the loop
[connection start];
于 2012-10-31T16:38:39.597 回答