我正在将一个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;
}
答案 0 :(得分:1)
是的,这是一个很好的方法。
1)通过将数据移动到单独的实体,您可以获取主实体而无需将大数据加载到内存中。
2)managedObjects上的psudo属性非常酷,并且对于这样的事情非常有效。但我会担心在二传手中做太多事情。在这种情况下,我认为这是可以的,但做更多可能会导致问题。如果程序员只是设置thing.pdfData = data
并且发生了许多事情,程序员并不认为这可能会导致错误。