我有一个名为的实体,它具有一组实体(一对多关系)LogBook
的属性(称为)。columns
LogBookColumn
我看到检索可变列集的标准方法似乎是:
NSEntityDescription *myLogbook;
myLogbook = [NSEntityDescription insertNewObjectForEntityForName:@"LogBook"
inManagedObjectContext:self.managedObjectContext];
NSMutableSet *columns = [myLogbook mutableSetValueForKey:@"columns"];
而不是第三行的方法,我想使用点表示法。为此,我创建了类定义,也称为LogBook
and LogBookColumn
,并使用 @property 创建 setter 和 getter。
LogBook *myLogBook;
myLogbook = [NSEntityDescription insertNewObjectForEntityForName:@"LogBook"
inManagedObjectContext:self.managedObjectContext];
NSMutableSet *columns = (NSMutableSet *)myLogbook.columns;
那么,columns
默认情况下真的是一个可变集吗?我做了两件事来验证:
- 尝试写入列表,例如:
[columns addObject:aColumn];
- 询问:
BOOL isKindOfMutableSet = [myLogbook.columns isKindOfClass:[NSMutableSet class]];
两者都可以达到预期的结果,这可能会使这个问题过大,但我非常担心难以追踪的内存错误。我还想知道问这个问题是否isKindOfClass
会起作用,因为我已将其定义为可变集 - 所以即使底层内存组织不支持可变集,它也不会起作用吗?
以上所有内容总结为:这是访问和更改columns
属性/属性的正确方法吗?