0

NSLoggedの場合、次のようなNSDictionary値の配列があります

{
 HASMOD = F;
 ISLOCKED = F;
 ISREGD = F;
 MANU = "HORNET";
 ID = 706;
},
 {
 HASMOD = T;
 ISLOCKED = F;
 ISREGD = T;
 MANU = "BANJI";
 ID = 225;
},
//etc

これらの値をコアデータオブジェクトに(正しいタイプで)保存しようとしています。私はこのチュートリアルに従っていて、各オブジェクトに値を挿入しようとしているところに到達しましたが、辞書の配列からこれを行う方法がわかりません。1つのロットを入力する方法しか示していないためです。情報の

だから私は自分でそれをやろうとしました..しかし、それは何よりも疑似コードです...これは私がやった限りです...うまくいけば、それは私が達成しようとしていることを理解するのに役立ちます。

// WRITE TO CORE DATA
    NSManagedObjectContext *context = [self managedObjectContext];
    Manuf *manuf = [NSEntityDescription insertNewObjectForEntityForName:@"Manuf" inManagedObjectContext:context];


    int mycount = [parsedDataArrayOfDictionaries count];

    while (mycount != 0) {

        // Somehow read Dictionaries and put them into their correct value types
        BOOL hasModBool;
        hasModelBool =

        BOOL isLockedBool;
        isLockedBool =

        BOOL isRegedBool;
        isRegedBool =

        NSString *manuString = [[NSString alloc] init];
        manuString =

        int manuIDInt;
        manuIDInt =


        // pass all the values into the manuf coredata obj
        manuf.hasMod = hasModBool;
        manuf.isLocked = isLockedBool;
        manuf.isReged = isRegedBool;
        manuf.manu = manuString;
        manuf.manuID = manuIDInt;

        count --; // itterate through the array
    }

誰かが辞書の配列を調べて、コアデータオブジェクトの変数に挿入するのを手伝ってくれることを願っています。

どんな助けでも大歓迎です。

4

1 に答える 1

2

for-in ループを使用して配列を反復処理し、valueForKey: で値を取得するだけです。

for (NSDictionary *dict in parsedDataArrayOfDictionaries) {
     Manuf *manuf = [NSEntityDescription insertNewObjectForEntityForName:@"Manuf" inManagedObjectContext:context];
     BOOL hasModelBool;
     BOOL isLockedBool;
     BOOL isRegedBool;
     if([dict valueForKey:@"HASMOD"] isEqualToString:@"T"]) {
        hasModelBool = TRUE;
     }else{
        hasModelBool = FALSE;
     if([dict valueForKey:@"ISLOCKED"] isEqualToString:@"T"]) {
        isLockedBool = TRUE;
     }else{
        isLockedBool = FALSE;
     ......
     ......
     // pass all the values into the manuf coredata obj
    manuf.hasMod = hasModBool;
    manuf.isLocked = isLockedBool;
    manuf.isReged = isRegedBool;
    manuf.manu = manuString;
    manuf.manuID = manuIDInt;
}

ここで、辞書の「T」または「F」の値は、TRUE または FALSE に変換する必要がある文字列であると想定しています。

于 2012-09-27T00:38:16.957 に答える