2012-06-20 1 views
1

안녕 난 CoreData에 다음 MultableArray의 데이터베이스에서 오는 값을 저장하고 오전 :CoreData에 저장된 문자열은 <null>과 문자열을 반환합니다. 왜?

NSMultableArray *mutary = [[NSMultableArray alloc] init]; 
     NSManagedObjectContext *context = [app managedObjectContext]; 
    for(int n=0; n<[AttributeArray count]; n++) 
    { 

    [mutary addObject:[[AttributeArray objectAtIndex:n] objectForKey:@"AttributName"]]; 
    NSLog(@"%@", mutary); 
} 
attributeString = [mutary componentsJoinedByString:@","]; 

raume = [NSEntityDescription insertNewObjectForEntityForName:@"Raum" inManagedObjectContext:context]; 

raume.raumattribut = attributeString; 

if (![context save:&error]) { 
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
abort(); 

}

MultableArray에 대한

NSLog 출력은 다음과 같습니다

2012-06-20 17:21:00.047 book-app[31984:15803] (
    A7OVERHEAD, 
    Beamer 
) 

지금까지의 올바른 작업 . 데이터베이스의 두 가지 예상 값이 이제 Array에 있습니다. 지금은 CoreData에서 이러한 특성을 가져 오는 오전 :

NSManagedObjectContext *context = [app managedObjectContext]; 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Raum" inManagedObjectContext:context]; 
    [request setEntity:entity]; 
    NSError *error = nil; 
    NSArray *events = [context executeFetchRequest:request error:&error]; 

for (Raum *att in events) 
    { 
    stringAttribute = [[events valueForKey:@"raumattribut"] componentsJoinedByString:@","]; 
    NSLog(@"ATTRIBUTE: %@", stringAttribute); 
    } 
} 

를 지금까지 너무 좋아. 하지만 지금 내 NSLog 출력을 보면 :

2012-06-20 17:21:00.055 book-app[31984:15803] ATTRIBUTE: <null>,A7OVERHEAD,Beamer 

CoreData가 반환 된 다음 두 값이 반환됩니다. 그게 어디서 오는거야?

누군가 도움을 줄 수 있습니까? 사전에

감사

답변

1

편집 : 가있는 NSArray에 valueForKey를 호출하면 각 요소의 각 구성원에 valueForKey를 호출하여 생성 된 배열을 반환 : 일부 조사하고 (설명 참조) 분명히, 여기 내 대답 후 원래 배열. 즉, 가져 오기 요청으로 반환 된 총 개체 수가 3 개이고 첫 번째 개체에 raumattribut 특성이 설정되어 있지 않음을 나타냅니다.

이전 답변 : NSArray (쿼리 결과)의 인스턴스에서 valueForKey를 호출하고 있습니다. 아마도 이 필요합니다 objectAtIndex : 0 먼저 값을 반복하는 변수를 사용 하시겠습니까? valueForKey는 nil을 반환 할 가능성이 큽니다.

stringAttribute = [[att valueForKey:@"raumattribut"] componentsJoinedByString:@","]; 

또는 이와 유사한 것.

편집 : 는 처음에 나는 그것이 단지 (NULL)을 반환하는 것처럼이 두 번째 부분에서 루프, 내가 그것을 할 경우 ATTR,

+0

를 사용하는 위의 코드 샘플을 편집 한 놓쳤다. 다른 해결책이 있습니까? – Paks

+0

내 대답을 편집했습니다. raumattribut 속성이 어떤 유형인지, componentsJoinedByString이 적절한 지 여부는 확실하지 않지만 –

+0

이 작동하지 않습니다. 내가 얻을 수있는 오류 : - [NSCFString componentsJoinedByString] 인식 할 수없는 선택기 .. "raumattribute"는 NSString이고 왜 [att valueForKey : @ "raumattribut"] 대신 [[valueForKey : @ "raumattribut]] – Paks

관련 문제