2012-08-06 3 views
0

이것은 값을 얻고 자하는 배열의 샘플입니다.iOS 배열에서 값을 읽는 방법

coursesArray = [[NSMutableArray alloc]init]; 

// AR111: 
[coursesArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys: 
          @"MUR",@"courseType", 
          @"AR111",@"courseCode", 
          @"Arabic Communication Skills (I)",@"courseName", 
          @"3",@"creditHours", 
          @"",@"preRequisites", 
          @"63.000",@"coursePrice", 
          @"6.000",@"courseEPP", 
          @"This course aims at .",@"courseDetails", 
          nil]]; 

그리고이 값을 얻기위한 코드입니다.

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 

int i = 0; 
for (i = 0; i < [coursesArray count] ; i++) { 

NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

    [newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"]; 
} 

중 하나가 다음과 같은 부분을 수정하는 데 도움이 할 수있는 경우

:

[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"]; 

값은 핵심 데이터 forKey에 추가 될 것입니다 : "courseName"@.

+0

이 정확한가? [newManagedObject setValue : [[coursesArray objectAtIndex : i] objectForKey : @ "courseName"] forKey : @ "courseName"]; ' – NamshanNet

+0

명확한 질문이되도록 작성한 것을 다시 시도하십시오. "내가 어떻게 읽을 수 있고 그것을 위에 놓을 수 있니?" –

답변

3
[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"]; 

이것은 한 줄에 너무 많은 코드를 넣는 전형적인 경우입니다. 이 컴파일 실제로 기대하지 않습니까?

섹션으로 나누어 보겠습니다. 코드의 중앙 비트를 꺼내 XX로 바꿨습니다 :

[newManagedObject setValue:XX forKey:@"courseName"]; 

이 비트는 정상적으로 보입니다. setValue:forKey은 관리 객체에 대한 유효한 방법입니다.

XX입니다 :이 오른쪽 또는없는 경우

[YY forKey:@"courseName"] 

그것은 분명하지 않다,하지만 잘 보이지 않는 - 메소드 이름은 잘 보이지 않는다.

[coursesArray objectAtIndex:i] 

이 잘이며, 변경 가능한 사전을 반환

YY입니다. 그러나 사전은 forKey:이라는 메서드를 구현하지 않습니다. 그들은 을 수행합니다.은 원하는 것 인 objectForKey:이라는 메서드를 구현합니다.

그래서, 수정 된 행은 다음과 같습니다

[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@"courseName"] forKey:@"courseName"]; 

이 같은 코드를 많이 작성하는 경우는, 데이터 멤버를 보유하는 특성을 가진 사용자 객체가 갑자기 더 많은 의미를. forKey : 모든 곳에서 곧 읽을 수 없게됩니다.

+1

나는 그것을 망가 뜨리려고하고 이것을 보았다 : "이것은 한 줄에 너무 많은 코드를 넣는 전형적인 경우"+1 !!! – user523234

관련 문제