0

我正在使用核心数据来检索一个可传输的对象,然后将其保存为 NSArray,如下所示:

NSArray *bigDataResultsArray = [XAppDelegate.managedObjectContext executeFetchRequest:bigDataFetchRequest error:&error];
NSArray *bigDataResultsArrayJSON = [bigDataResultsArray valueForKey:@"bigData"];

我能够将 valueForKey 降低到一个较小的对象数组,但它只显示为 1 个对象。

当我尝试从以下内容中提取“值”时,我收到错误,即它不符合值。数据格式如下,不会解析为 JSON:

我尝试使用以下方法提取价值:

    NSArray *styleArray = [bigDataResultsArrayJSON valueForKey:@"Styles"];
    NSLog(@"%@", [styleArray valueForKey:@"Value"]);

这给出了一个错误。但是,如果我记录样式数组,我会得到以下“

(
            {
        Total = 1;
        Value = 5;
    },
            {
        Total = 1;
        Value = "5.5";
    },
            {
        Total = 75;
        Value = 6;
    },
            {
        Total = 4;
        Value = "6.5";
    },
            {
        Total = 239;
        Value = 7;
    },
            {
        Total = 149;
        Value = "7.5";
    },
            {
        Total = 260;
        Value = 8;
    },
            {
        Total = 214;
        Value = "8.5";
    },
            {
        Total = 259;
        Value = 9;
    },
            {
        Total = 196;
        Value = "9.5";
    },
            {
        Total = 254;
        Value = 10;
    },
            {
        Total = 148;
        Value = "10.5";
    },
            {
        Total = 237;
        Value = 11;
    },
            {
        Total = 38;
        Value = 12;
    },
            {
        Total = 2;
        Value = 13;
    }
)
)

谁能帮助我将这些数据的最后一层提取到一组值对象中。我尝试转换为 NSData 然后转换为 JSON 如下,但数据的格式不会解析:

NSData *raw = [[ra valueForKey:@"bigData"] dataUsingEncoding:NSUTF8StringEncoding]

非常感谢任何帮助。

4

2 回答 2

1

您可以从一组字典中提取一个只有一个字段的数组:

NSArray *dictArray = @[{@"total" : @1, @"value" : @5},
  {@"Total" : @1, @"Value" : @5.5}, … ];
NSArray *resultsArray = [dictArray valueForKeyPath:@"value"];

---> @[@5, @5.5, …];

您可以对一组核心数据对象执行相同操作:

// ... create the managed objects and fill their attributes
object.total = @1;
object.value = @5; 
// etc
NSArray *resultsArray = [fetchedObjects valueForKeyPath:@"value"];

---> @[@5, @5.5, …];
于 2013-09-12T13:48:40.173 回答
0

您的 styleArray 是一个字典数组。数组没有键值对;数组的每个元素都可以。Mundi 所说的是正确答案,并且会给你一个单一的值数组。

为了超级明确,您可以遍历 styleArray 的元素,并单独提取每个字典,也许这对您来说会更清楚。

NSArray *styleArray = [bigDataResultsArrayJSON valueForKey:@"Styles"];

NSMutableArray *valuesArray = [NSMutableArray array];
for (int i=0; i<styleArray.count; i++) {
    NSDictionary *styleDictionary = styleArray[i];
    id valueObj = [styleDictionary objectForKey:@"Value"];
    [valuesArray addObject:valueObj];
}

NSLog(@"Values: %@", valuesArray);
于 2014-08-21T00:00:08.517 回答