请参阅带有字符串名称的Array对象 - Objective C

时间:2013-05-16 15:34:17

标签: ios objective-c arrays

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

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

从带有名称值的For循环开始,然后将该对象添加到数组

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

我已经声明了与它将检索的名称相对应的数组,但是我需要添加那些ARRAYS的Object而不是从Core Data返回的STRING。我是这类问题的新手,例如JS,这不是问题。

是否有一个ArrayWithNameLike @“name”函数?

2 个答案:

答案 0 :(得分:3)

如果您使用的是Core Data,则应表明Core Data模型中对象之间的关系。如果你真的想继续发明你自己的关系管理的道路 - 没有错 - 不要使用核心数据,因为你最终会一直与它斗争。


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

假设您有一个名为 Book 的托管对象。每个图书都可以在一个类别中。每个类别都可以包含多个 Book **。 主要详细信息是指您构建的用户界面选择**图书大师),类别是在辅助UI中显示。这可以扭转;您选择类别,系统会显示该类别中* 图书 *的列表。

关键是让Core Data为您维护关系。

因此,您需要预订类别之间的一对多关系。

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

答案 1 :(得分: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];

做你的事。