将CoreData数据blob移动到单独的对象中

时间:2017-07-14 06:44:14

标签: ios objective-c core-data

我正在将一个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;
}

1 个答案:

答案 0 :(得分:1)

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

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

2)managedObjects上的psudo属性非常酷,并且对于这样的事情非常有效。但我会担心在二传手中做太多事情。在这种情况下,我认为这是可以的,但做更多可能会导致问题。如果程序员只是设置thing.pdfData = data并且发生了许多事情,程序员并不认为这可能会导致错误。