gpt4 book ai didi

objective-c - NSManagedObject 子类的自定义初始化

转载 作者:可可西里 更新时间:2023-11-01 04:36:17 25 4
gpt4 key购买 nike

如何为 NSManagedObject 子类编写自定义 init?例如,我想要像 initItemWithName:Volume: 这样的东西。其中 Item 是一个 NSManagedObject 子类,具有两个属性,namevolume

最佳答案

卡洛斯,

正如 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...

这种方法非常灵活,在应用开发过程中也很容易维护。

您可以在 Stanford Course Lecture 14 找到更多信息代码示例。此外,另请参阅 Stanford 在 iTunes 上的免费视频(如果您有 Apple ID)。

希望对您有所帮助。

附言为了简单起见,我假设 name 是一个 NSStringvolume 是一个 NSNumber。对于 volume,最好使用 NSDecimalNumber 类型。

关于objective-c - NSManagedObject 子类的自定义初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com