【发布时间】:2010-12-27 11:25:40
【问题描述】:
我有一些 NSManagedObjects,我想编写方法来排序和比较它们的属性。
我的问题是,由于 Core Data 将属性定义为 @dynamic,因此无法在编译时引用它们。这意味着使用如下方法装饰 NSManagedObject:
- (NSComparisonResult) compareDateAndTime:(Event *) event {
return [originDate compare:[event originDate]];
}
将导致编译器无法找到名为“originDate”的属性。 上面的方法是这样调用的:
NSArray *events = [[NSArray alloc]
initWithArray:[unsortedEvents sortedArrayUsingSelector:@selector(compareDateAndTime:)]];
我可以使用谓词或 fetchedResultController,但我想将它们构建为 我自己的方法,因为我对每个 NSManagedObject 都有一个相同的 NSObjects。这个 NSObject 充当一个临时对象,在它的属性被设置在 NSManagedObject 上之前被传递和填充,然后被持久化。我还有一些其他功能,比如专门的访问器,我想添加到 NSManagedObject 中。
**(1)**是否有使用方法和函数装饰 NSManagedObjects 的一般/最佳实践方法**(2)** 并且在为实体“重新构建”类时让 Xcode 不覆盖它们?
感谢您提供的任何帮助或“RTFM”:)
【问题讨论】:
-
我在下面回答了您的问题 (1&2),但我同意弗兰克的观点,即我不理解您最初描述的“问题”。编译器应该允许您使用声明的属性。您是否包括为实体生成的类的标题?
标签: iphone objective-c core-data