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

辞書の配列からフィールドが 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 に答える