iphone – Xcode4:为自定义核心数据管理对象生成不同的代码

iphone – Xcode4:为自定义核心数据管理对象生成不同的代码,第1张

概述现在 Xcode4是公开的,我把这个问题从苹果公司的秘密开发者论坛中移除: 有人可以解释为什么在以下过程中生成的代码与Xcode3不同?代码是否更好或可能是错误? 我使用Core Data自定义托管类,这是我在Xcode3中遵循的过程: >转到模型编辑器 >选择要生成源代码的实体 >转到File-> New->新建文件 >选择managedobject类(或者是什么,我不能再打开xcode3来验证 现在 Xcode4是公开的,我把这个问题从苹果公司的秘密开发者论坛中移除:

有人可以解释为什么在以下过程中生成的代码与Xcode3不同?代码是否更好或可能是错误?

我使用Core Data自定义托管类,这是我在Xcode3中遵循的过程:

>转到模型编辑器
>选择要生成源代码的实体
>转到file-> New->新建文件
>选择managedobject类(或者是什么,我不能再打开xcode3来验证)
>选择要生成的实体(步骤2中先前选定的实体已被检查)
>单击完成

现在,在Xcode4中,我认为这是怎么做的,但我不确定,因为它生成不同的代码:

>转到模型编辑器
>选择实体
>转到file-> New-> New file
>选择“NSManagedobject子类”
>选择位置并创建.

它产生的代码是不同的,原因如下:

>在实体中添加和删除集合成员的生成代码不再在@interface中声明,而是@implementation.这导致代码感觉失败检测这些方法.
>添加和删除对象的生成代码现在已经完全定义,不再使用CoreDataGeneratedAccessors进行自动生成

例如,Xcode3将在header文件中生成此代码:

@interface SampleEntity (CoreDataGeneratedAccessors)- (voID)addChildobject:(Child *)value;- (voID)removeChildobject:(Child *)value;- (voID)addChild:(NSSet *)value;- (voID)removeChild:(NSSet *)value;@end

现在,Xcode4在IMPLEMENTATION文件中生成此代码:

@implementation SampleEntity@dynamic children;- (voID)addChildobject:(Child *)value {        NSSet *changedobjects = [[NSSet alloc] initWithObjects:&value count:1];    [self willChangeValueForKey:@"children" withSetMutation:NSkeyvalueUnionSetMutation usingObjects:changedobjects];    [[self primitiveValueForKey:@"children"] addobject:value];    [self dIDChangeValueForKey:@"children" withSetMutation:NSkeyvalueUnionSetMutation usingObjects:changedobjects];    [changedobjects release];}

有人可以衡量为什么这不同吗? Xcode4代码感觉不喜欢这种生成NSManagedobject子类的新方式.

解决方法 简短的答案:不要使用Xcode的代码生成.使用发电机,享受更轻松的生活.

至于为什么,很难说.我从来不是Xcode生成Core Data子类的方式的粉丝,不会推荐它们.我们可以猜测为什么他们做了他们做的事情,但是基于Xcode4和Core Data的其他问题,我会把它粉碎成“未准备好”或“未完全测试”.

如果您想继续使用Xcode代码生成器,请提供雷达.

总结

以上是内存溢出为你收集整理的iphone – Xcode4:为自定义核心数据管理对象生成不同的代码全部内容,希望文章能够帮你解决iphone – Xcode4:为自定义核心数据管理对象生成不同的代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1029265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存