如何爲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。好評! –