gpt4 book ai didi

objective-c - CoreData 可以处理多态子类吗?

转载 作者:太空狗 更新时间:2023-10-30 03:14:20 26 4
gpt4 key购买 nike

我有一个名为 Item 的 CoreData 模型(托管对象):

@interface Item :  NSManagedObject {
NSString * type;
}
@property (retain) NSString * type;
@end

我还有两个 Item 的子类:

@interface Circle : Item
@end

@interface Square : Item
@end

我通过 type 属性跟踪项目的子类。

当我获取我的 Items 时,我得到了一个 Items 数组。但我希望能够根据项目的 type 对其进行动态类型转换。

CoreData 本身支持这个吗?如果没有,是否有办法动态地对每个 Item 进行类型化?

我可以获得我想要转换 Item 的类:

Item * item = ...;
id klass = NSClassFromString(item.type);

我只是不知道如何将 item 转换为 klass 类型。

最佳答案

是的,它是内置的。您不必手动执行。您甚至不必自己输入 type 条目。

在 Objective-C 中有父类(super class)/子类的概念。对应的,在Core Data中,就有父实体/子实体的概念。这可以在模型文件中指定。

在 Core Data 建模器中,通过继承您的 Item 实体,创建两个实体 CircleSquare。您可以在建模器中指定实体的 parent。然后,在建模器中,为您的实体 Circle 指定自定义类 Circle,为实体 Square 指定类 Square >。

然后,当您从数据库中获取托管对象时,会自动分配正确的类。阅读 documentation建模师。

同样,一切都可以在建模器中完成,无需您编写任何内容。

关于objective-c - CoreData 可以处理多态子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3826985/

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