将Core Data对象存储到NSDictionary与NSArray中

时间:2012-09-07 12:00:27

标签: core-data

我正在尝试将[Sectioninfo Objects]的输出存储到数组

NSArray *currentCategory = [sectionInfo objects];

虽然我在NSLOG上的OutPut如下:

"<Catalogue: 0x6da1d20> (
    entity: Catalogue;
    id: 0x6da1090 <x-coredata://894839B1-B485-4D64-8D46-99E388F00225/Catalogue/p3> ;
    data: {\n    comments = nil;\n
                 email = nil;\n
                 name = Shorts;\n
                 phone = 0;\n
                 picture = <ffd8ffe0 00104a46 49460001 01000001 00010000 ffe10058 45786966 00004d4d 002a0000 00080002 01120003 00000001 0001>;\n
                 price = 77;\n
                 shop = Shop;\n
                 website = nil;\n})"

我只对数据部分感兴趣

我如何提取数据部分? &安培;然后我可以将它添加到NSArray

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

由于问题标记为核心数据,我假设您正在讨论从NSFetchedResultsController通过

获取的部分信息
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];

如果是这种情况,那么section info协议指定objects返回该部分中的对象数组。这个对象数组将保存实际对象,就像从执行提取时获得的对象数组一样。

因此,您可以像访问任何其他对象一样访问它们。希望您有一个子类,因此您可以通过适当的属性访问该对象。

否则,您可以使用KVC方法。从您的日志输出中,我假设data是您对象的属性(可能是字符串)。

NSArray *sectionObjects = [sectionInfo objects];
NSMutableArray *dataArray = [NSMutableArray arrayWithCapacity:sectionObjects.count];
for (NSManagedObject *object in sectionObjects) {
    NSString *data = [object valueForKey:@"data"];
    [dataArray addObject:data];
}

或者,你可以更简洁地做到:

NSArray *dataArray = [[sectionInfo objects] valueForKey:@"data"];

返回一个数组,其结果是将键应用于接收器中的每个对象。