-3

我有一个 IOS 应用程序,它在第一个视图的核心数据中存储用户选择的类别,然后从与下一个视图中选择的类别对应的数组中显示一个随机项目。

除了一个部分之外,我一切正常:类别作为字符串保存在 Core Data 中,我需要获取字符串值并将名称与这些字符串对应的 ARRAY 对象添加到更大的数组中。

从一个获取名称值的 For 循环开始,然后将该对象添加到数组中

 for (NSManagedObject *obj in matchingData) {
        name = [obj valueForKey:@"name"];
        [categoryArray addObject:name];
 }

我已经声明了与它将检索的名称相对应的数组,但是我需要添加这些数组的对象,而不是从核心数据返回的字符串。我是这类问题的新手,例如在 JS 中这不是问题。

是否有 ArrayWithNameLike @"name" 函数之类的?

4

2 回答 2

3

如果你使用 Core Data,你应该在你的 Core Data 模型中表达你的对象之间的关系。如果你真的想继续走上发明自己的关系管理的道路——这没什么错——不要使用 Core Data,因为你最终会一直与它作斗争。


听起来您正在尝试在创建Master Detail界面时重新发明建模关系。

假设您有一个名为Book的托管对象。每本书都可以属于一个类别。每个类别可以有许多书**。 主详细信息是指您是否正在构建一个 UI,其中您选择了 **Book)并且类别显示在辅助 UI 中。这可以扭转;您选择一个类别并显示该类别中的 * Book * 列表。

关键是让 Core Data 为您完成维护关系的工作。

因此,您需要从BookCategory的一对多关系。

CoreData Books示例详细介绍了如何执行此操作。

于 2013-05-16T15:45:06.360 回答
1

将您的随机项目数组保存在 NSDictionary 中,并关闭类别 NSString。在此示例中,替换为您希望与该特定类别关联的数组(通过方法检索,在那里创建,等等)

 self.categoryItemArrays = [NSMutableDictionary dictionaryWithCapacity:[matchingData count]];

 for (NSManagedObject *obj in matchingData) 
 {
    name = [obj valueForKey:@"name"];
    [self.categoryItemArrays setObject:<Cateogry Array> forKey:name];
 }

然后对于您的数据源,您可以获得键并按字母顺序排列它们或按您想要的方式排序

[self.categoryItemArrays allKeys];

做你的事。

于 2013-05-16T15:54:16.680 回答