如何从NSDrray的NSDrray中读取值

时间:2012-09-26 23:29:01

标签: iphone ios core-data

我有一个NSDictionary值数组,在NSLogged

时看起来像这样
{
 HASMOD = F;
 ISLOCKED = F;
 ISREGD = F;
 MANU = "HORNET";
 ID = 706;
},
 {
 HASMOD = T;
 ISLOCKED = F;
 ISREGD = T;
 MANU = "BANJI";
 ID = 225;
},
//etc

我正在尝试将这些值保存到我的核心数据对象(具有正确的类型)。我一直在关注这个tutorial,并且已经达到了我试图将值插入每个对象的程度,但是我不知道如何从一个字典数组中执行此操作..因为它只显示了如何输入大量信息

所以我自己尝试过这样做..但它的伪代码比任何东西都多......这就像我所做的一样......希望它有助于理解我想要实现的目标。

// 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
    }

我希望有人可以帮助我浏览字典数组并将它们插入到我的核心数据对象的变量中。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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的字符串。