【发布时间】:2012-03-23 10:53:57
【问题描述】:
我正在编写一个实用程序来将照片从 iOS 设备异步上传到 Web 服务器。每张照片都由一个Photo Core Data 实体表示,该实体在文件系统中具有照片文件名的属性,以及一个布尔值has_been_uploaded 属性。
我想建立一个上传这些图片的队列,然后在上传完成后将它们的has_been_uploaded 属性设置为YES。我将 ASIHTTPRequest 和 ASINetworkQueue 用于网络方面。
从 Core Data 获取所需的图像并上传它们工作正常,然后我的问题是为正确的实体更新 has_been_uploaded 属性。
我现在的代码是这样的:
for (Photo *myPhoto in [fetchedResultsController fetchedObjects]) {
if(myPhoto.path != nil) {
__block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://example.com/postimage"]];
NSString *imagePath = [NSString stringWithFormat:@"%@.png",[documentsDirectory stringByAppendingPathComponent:[myPhoto valueForKey:@"path"]]];
[request addFile:imagePath withFileName:[NSString stringWithFormat:@"%@.png",myPhoto.path] andContentType:@"image/png" forKey:@"image"];
[request.userInfo setValue:myPhoto forKey:@"photo"];
[[self imageUploadQueue] addOperation:request];
}
}
[[self imageUploadQueue] go];
但是在 ASIHTTPRequest 的 didComplete 委托方法中,当我尝试从请求的 userInfo 字典中检索 Photo 对象时,它始终为空:
- (void)queueRequestFinished:(ASIHTTPRequest *)request
{
Photo *photo = (Photo *)[request.userInfo valueForKey:@"photo"];
NSLog(@"uploaded image for photo: %@",photo);
}
如何可靠地检索正确的 Core Data 对象,以便在每个请求完成后更新其状态?
谢谢!
【问题讨论】:
标签: ios cocoa core-data asihttprequest