gpt4 book ai didi

objective-c - 如何根据另一个实体的一对多关系访问 CoreData 实体?

转载 作者:行者123 更新时间:2023-11-29 04:42:48 25 4
gpt4 key购买 nike

我正在通过示例库存应用程序学习 CoreData。我的数据模型有 2 个实体,“占有”和“ Assets 类型”。属性(property)与称为“assetType”的 Assets 类型具有一对一关系, Assets 类型与称为“possessions”的属性(property)具有一对多关系。每个属性(property)只有一种 Assets 类型,但 Assets 类型有多种属性(property)。

我想根据 Assets 类型将表格 View 分为几个部分。不过,我需要一些帮助来填充我的数据结构。

这是我如何建模我的 TableView Controller

表格部分的 NSArray数组中的每个部分对象都将是一个带有 2 个键的 NSDictionary,@"Header"- 这将是 Assets 类型,@"Possessions"是该 Assets 类型的所有物数组。

我可以从这个结构构建我的 TableView ,没有问题。我还可以将 Assets 类型从 CoreData 提取到字典的 header 键中。我感到困惑的是如何利用 Assets 类型与属性(property)之间的一对多关系,以便我可以将属性(property)放入字典的数组中。

如何将每种 Assets 类型的所有物放入数组中?

我是否需要使用谓词发出获取请求来获取具有匹配 Assets 类型的所有物,或者是否有更简单的方法? - 似乎效率很低,因为它必须检查所有属性(property)以进行匹配!?!?!?!?

AssetType 实体的对多关系“属性(property)”是否是 AssetType 实体的可访问属性?如果是这样我该如何访问它?它返回什么?

我不是在寻找免费代码,但如果需要,我愿意发布我的代码。我真正想要的是知道解决这个问题的最佳方法,也许还可以在网上找到有用的信息来完成这个任务。我不是一个完全的新手,但我仍然无法理解 CoreData,到目前为止,Apple 文档在这个主题上仍然让我感到非常困惑。我感谢您提供的任何帮助。

最佳答案

如果您已使用 Xcode 默认 NSManagedObject 模板创建了 AssetType 类(参见图片)

File/New/File.../Core Dats/NSManagedObject subclass

您的 AssetType.h 中应该有类似的内容:

@interface AssetType : NSManagedObject

@property (nonatomic, retain) NSSet *possessions;

@end

@interface AssetType (CoreDataGeneratedAccessors)

- (void) addPossessionsObject: (Possession *) value;
- (void) removePossessionsObject: (Possession *) value;
- (void) addPossessions: (NSSet *) value;
- (void) removePossessions: (NSSet *) value

@end

因此,如果您有一个 AssetType 对象,则可以通过 possessions 属性访问与其相关的所有 Possession 对象。但默认情况下它不是排序的,因此要将这些对象作为数组访问,您需要调用集合的 -allObjects 方法,该方法将集合中的对象作为数组返回,然后可能进行排序这些物体以某种方式。

编辑:

此外,即使您没有以这种方式创建 NSManagedObject 子类并且它尚未实现 possessions 属性,您也可以按照与中所述相同的方式将此属性添加到该类中上面的示例,并在 AssetType.m 中将其实现为 @dynamicproperties

关于objective-c - 如何根据另一个实体的一对多关系访问 CoreData 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109860/

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