【问题标题】:When more than one URL present in Core Data, the url is not working当 Core Data 中存在多个 URL 时,该 URL 不起作用
【发布时间】:2014-01-05 08:03:24
【问题描述】:

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

这是保存视频的代码:

- (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];

【问题讨论】:

  • 您只是将视频的 URL 保存到持久存储,而不是视频本身。这就是你想要的吗?
  • 我认为最好不要将视频保存到核心数据,因为它太大了。我只是保存 URL,然后将视频保存在其他地方。只要检查外部存储就可以保存到核心数据吗? @bilobatum
  • 我的评论措辞不当。听起来您正在使用 URL 自己保存视频本身并将 URL 存储在 Core Data 中。请参阅下面的答案。

标签: ios uitableview url core-data video


【解决方案1】:

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

【讨论】:

  • 嗨,一个问题,我只是这样设置它,我想知道保存后显示视频的最佳方式是什么。我应该尝试从数据中获取 URL 还是什么?
  • 或者有没有办法只使用数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2017-09-20
相关资源
最近更新 更多