如何为NSManagedObject
子类编写自定义init
?我想要例如initItemWithName:Volume:
。其中Item
是具有两个属性的NSManagedObject
子类,name
和volume
。NSManagedObject子类的自定义初始化
回答
卡洛斯,
由于内纳德·米哈伊洛维奇建议你可以创建这个类别。例如,如果您有Item
类,则可以创建一个名为Item+Management
的类别,并将创建代码放在该类中。在这里你可以找到一个简单的例子。
// .h
@interface Item (Management)
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context;
@end
// .m
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context
{
Item* item = (Item*)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:context];
theItem.name = theName;
theItem.volume = theVolume;
return item;
}
当你想创建一个新的项目,不喜欢
#import "Item+Management.h"
的进口和使用这样
Item* item = [Item itemWithName:@"test" volume:[NSNumber numberWithInt:10] inManagedObjectContext:yourContext];
// do what you want with item...
这种方式非常灵活,很容易在维护应用开发。
您可以在Stanford Course Lecture 14代码示例中找到更多信息。另外,请参阅斯坦福大学的iTunes免费视频(如果您有Apple ID)。
希望有所帮助。
P.S.为了简单起见,我想name
是NSString
和volume
是NSNumber
。对于volume
,最好使用NSDecimalNumber
类型。
非常感谢Flex_Addicted!但是,有一个问题:为什么我们要在类中创建这些方法,而不是在'NSManagedObject'子类中创建这些方法?我有几门课,我至少需要7门课。 – Carlos
您可以在http://stackoverflow.com/questions/9297101/nsmanagedobjects-with-categories和http://blog.chrismiles.info/2011/06/organising-core-data-for-ios.html上找到相关信息。 (我喜欢后者的很多技巧)。如果您使用Xcode为您的托管对象生成自定义类,那么这个简单的解释是:如果您修改实体中的某些内容,然后生成类以适应这些更改,Xcode将覆盖您在原始子类中编写的代码。 –
明白了!非常感谢!! – Carlos
- 1. 初始化NSManagedObject的子类
- 2. 初始NSManagedObject子类
- 3. 初始化NSManagedObject子类时的继承
- 4. 初始化自定义类
- 5. 如何正确实现一个子类NSManagedObject的自定义初始化器
- 6. 初始化一个NSManagedObject的子类的子类
- 7. CoreData:error:无法调用NSManagedObject自定义类上的指定初始化程序
- 8. 初始化自定义类的向量?
- 9. EXC_BAD_ACCESS自定义类的初始化
- 10. 自定义类=自定义+分配,自定义+初始化
- 11. 自定义UITableViewCell子视图初始化?
- 12. 如何初始化自定义类?
- 13. 着用来初始化自定义类
- 14. 初始化自定义UIViewController
- 15. 初始化自定义UICollectionViewCell
- 16. 程序初始化的UITableViewController的一个自定义子类tableviewcell
- 17. 使用自定义初始化方法的SKNode子类
- 18. NSManagedObject初始化/ dealloc等效
- 19. NSManagedObject未能初始化
- 20. iOS子类UICollectionViewCell自定义初始化方法
- 21. Swift:使用自定义参数初始化UIViewController子类
- 22. C4Shape自定义子类初始化问题?
- 23. 无法调用指定的初始化上NSManagedObject类 - CoreData
- 24. FetchedResultsController值不会覆盖自定义的NSManagedObject初始值
- 25. 弹簧log4j初始化vs自定义log4j初始化
- 26. 自定义SCNView的初始化方法
- 27. 定义WebActivator.PreApplicationStartMethod类的初始化顺序
- 28. 初始化UIAlertController的子类
- 29. 初始化'Time'的子类
- 30. 无法在NSManagedObject类'Item'上调用指定初始化程序
看看下面的问题http://stackoverflow.com/questions/10489578/custom-initializer-for-an-nsmanagedobject。可能我会帮你的。 –
@NenadMihajlovic +1。好评! –