2012-09-26 2 views
0

의있는 NSArray에서 값을 읽는 방법 내가 (올바른 유형) 내 핵심 데이터 객체에이 값을 저장하려고 할 때 NSLogged는 NSDictionaries

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

다음과 같다 NSDictionary와 값의 배열이있다. 나는이 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 
    } 

..

는 어떤 도움을 크게 감상 할 수있다.

답변

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로 변환 할 필요가 문자열이라는 것을 여기에 있으리라 믿고있어.

+0

지금 당신의 해결책을 시험해 보는 것이 좋습니다 :) 또한 그들이 변환되어야하는 것은 제가 값을 얻는 방법을 알아 낸 후에 이것을 어떻게 할 것인지를 조사 할 것입니다 : P하지만 당신이 저를 위해 이것을 한 것을보십시오! 대단히 감사합니다! – HurkNburkS

+0

그래,이 경고와 오류를 해결하기 위해 몇 가지 시도를 해왔지만 알아낼 수는 없습니다 .. on – HurkNburkS