サブクラスのカスタムinit
をコーディングするにはどうすればよいですか? たとえば、NSManagedObject
次のようなものが欲しいです。は2 つの属性を持つinitItemWithName:Volume:
サブクラスで、と.Item
NSManagedObject
name
volume
質問する
5103 次
1 に答える
6
カルロス、
Nenad Mihajlovicが提案したように、このカテゴリを作成できます。
したがって、たとえば、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...
このアプローチは非常に柔軟性があり、アプリ開発中の保守が非常に簡単です。
詳細については、スタンフォードコースレクチャー14のコードサンプルをご覧ください。さらに、スタンフォード大学のiTunesの無料ビデオも参照してください(Apple IDをお持ちの場合)。
お役に立てば幸いです。
PS簡単にするために、name
はaNSString
であり、volume
はであると思いますNSNumber
。タイプvolume
を使用する方が良いかもしれません。NSDecimalNumber
于 2012-08-29T14:47:31.623 に答える