我有一个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”函数?
答案 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];
做你的事。