【问题标题】:Moving CoreData data blob into separate object将 CoreData 数据块移动到单独的对象中
【发布时间】:2017-07-14 06:44:13
【问题描述】:

我将 NSData 属性从 CoreData 对象中移出到一个单独的对象中,因此 self.pdfData 变为 self.pdf.data。这看起来像是管理辅助对象的创建和删除的正确方法吗?

- (void)setPdfData:(NSData *)pdfData
{
    if (!pdfData) {
        if (self.pdf) {
            [self.managedObjectContext deleteObject:self.pdf];
            self.pdf = nil;
        }
    }
    else {
        if (!self.pdf) {
            self.pdf = [BaseFormPDF insertInManagedObjectContext:self.managedObjectContext];
        }
        self.pdf.data = pdfData;
    }
}

- (NSData *)pdfData
{
    return self.pdf.data;
}

【问题讨论】:

  • 为什么你还要将二进制 pdf 数据保存到核心数据中?将文件写入应用程序沙箱中的本地文档目录并在核心数据中写入文件的相对路径,我相信这是更清晰的方法
  • 这是一个有效的点。

标签: ios objective-c core-data


【解决方案1】:

是的,这是一个很好的方法。

1) 通过将数据移动到单独的实体,您可以获取主要实体,而无需将大数据加载到内存中。

2) managedObjects 上的 psudo 属性真的很酷,并且非常适合这样的事情。但我会担心在二传手做太多事情。在这种情况下,我认为没关系,但做更多可能会导致问题。如果程序员只是设置thing.pdfData = data 并且发生了很多程序员没想到的事情,这可能会导致错误。

【讨论】:

  • 无论如何我都无法在二传手中做更少的事情。有什么替代方法的建议吗?
  • 我觉得你现在做的很好。但这只是一个警告,不要做太多。
猜你喜欢
  • 2019-12-29
  • 1970-01-01
  • 2021-01-17
  • 2011-05-10
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
相关资源
最近更新 更多