簡體   English   中英

使用NSArray在iOS上根據可轉換的核心數據創建對象

[英]Creating an object from transformable core data on iOS using NSArray

我正在使用核心數據來檢索可傳輸對象,然后將其另存為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]

任何幫助,不勝感激。

您可以從字典數組中僅提取一個字段的數組:

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, …];

您的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM