1

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

NSArray *currentCategory = [sectionInfo objects];

虽然我在 NSLOG 上得到的输出如下:

"<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

感谢您的帮助

4

1 回答 1

0

由于该问题已标记为核心数据,因此我假设您正在谈论从NSFetchedResultsControllervia获得的部分信息

id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];

如果是这种情况,则节信息协议指定objects返回该节中的对象数组。这个对象数组将保存实际对象,就像您从执行 fetch 得到的对象数组一样。

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

否则,您可以使用 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"];

它返回一个数组,其中包含将密钥应用于接收器中的每个对象的结果。

于 2012-09-07T13:09:12.950 回答