Я пишу утилиту для асинхронной загрузки фотографий с устройства iOS на веб-сервер.Каждая фотография представлена сущностью 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];
Но тогда в методе делегата didComplete ASIHTTPRequest объект Photo всегда равен нулю, когда я пытаюсь извлечь его из словаря userInfo запроса:1014 *
- (void)queueRequestFinished:(ASIHTTPRequest *)request
{
Photo *photo = (Photo *)[request.userInfo valueForKey:@"photo"];
NSLog(@"uploaded image for photo: %@",photo);
}
Как можно надежно извлечь правильный объект Базовые данные, чтобы я мог обновлять его состояние после завершения каждого запроса?
Спасибо!