当Core Data中存在多个URL时,该URL无法正常工作

时间:2014-01-04 16:47:02

标签: ios uitableview url core-data video

我有一个带摄像头的应用程序拍摄视频,然后在UITableView中有一个照片缩略图。对于每个单元格,分配一个URL,该URL是缩略图的相应视频。为此,我将视频和缩略图存储在Core Data中。我第一次创建视频时,它工作正常,但第二次,正在检索网址。

以下是保存视频的代码:

- (void) saveVideo {

    NSManagedObjectContext *context = [self managedObjectContext];

    FeedEntity *feed = [NSEntityDescription insertNewObjectForEntityForName:@"FeedEntity" inManagedObjectContext:context];

    NSString *stringForSave = [self.videoURL absoluteString];

    NSData * stringData = [stringForSave dataUsingEncoding:NSUTF8StringEncoding];

    [feed setValue: stringData forKey:@"urlString"];

    NSError *error = nil;

    if (![self.managedObjectContext save:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    } else {

    }        
}

以下是我检索它的代码:

FeedEntity *feed = [_fetchedResultsController objectAtIndexPath:indexPath];
NSData *data = feed.imageData;

NSData *stringData = feed.urlString;
self.stringForURL = [[NSString alloc] initWithData:stringData encoding:NSUTF8StringEncoding];
self.stringForURL = [self.stringForURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

1 个答案:

答案 0 :(得分:0)

如果您正在为数据模型中的属性选中“允许外部存储”,那么您应该将视频本身而不是URL保存到上下文中作为一个包位(即, NSData)。当您选中“允许外部存储”时,您告诉Core Data它可以决定是否将大文件保存在持久存储内部或外部。您不需要自己持久化大文件。