2011-04-05 4 views
0

문제가 있는데, 단추를 누르면 모델 코어 데이터에서 정보를 검색하고 선택된 엔터티 핵심 데이터에서 검색 한 문자열로 배열을 채우는 방법이 있지만 배열은 다음과 같습니다. 빈, 왜 ... 여기NSMutableArray 채우기 문제

- (IBAction)action:(id)sender{ 
int numberanswer = [(NSSet *)[list valueForKey:@"answers"] count]; 
NSLog(@"The list have got: %i elements.", numberanswer); 
[arrayAnswer initWithCapacity:numberanswer]; 
for (int i =0; i < numberanswer; i++) { 
    NSManagedObject *answer = [[self sortAnswer] objectAtIndex:i]; 
    NSString *answerString = [[NSString alloc] initWithString:[[answer valueForKey:@"nameAnswer"] description]]; 
    NSLog(@"Answer: %@", answerString); 
    [arrayAnswer insertObject:answerString atIndex:i]; 
    NSLog(@"%@", [arrayAnswer objectAtIndex:i]); 
} 

NSLog(@"%@", [arrayAnswer count]); 

}

:

NSLog(@"Risposta: %@", answerString); 

내가 배열이 비어있는 이유 answerString가에서 매 사이클에 대한 모든 것을 알? 이것은 메소드의 NSLog입니다. 2011-04-05 23 : 59 : 57.538 test [574 : 207]이 목록에는 20 개의 요소가 있습니다.

2011-04-05 23:59:57.540 시험 [574 : 207] 답변 : 이것은 대답 1입니다.

2011-04-05 23 : 59 : 57.541 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.541 시험 [574 : 207] 않음 : 이는 ANSWER2이다.

2011-04-05 23 : 59 : 57.541 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.542 시험 [574 : 207] 않음 : 이는 answer3이다.

2011-04-05 23 : 59 : 57.542 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.543 시험 [574 : 207] 않음 : 이는 answer4이다.

2011-04-05 23 : 59 : 57.543 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.543 시험 [574 : 207] 않음 : 이는 answer5이다.

2011-04-05 23 : 59 : 57.544 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.544 시험 [574 : 207] 않음 : 이는 answer6이다.

2011-04-05 23 : 59 : 57.544 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.545 시험 [574 : 207] 않음 : 이는 answer7이다.

2011-04-05 23 : 59 : 57.545 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.546 시험 [574 : 207] 않음 : 이는 answer8이다.

2011-04-05 23 : 59 : 57.546 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.546 시험 [574 : 207] 않음 : 이는 answer9이다.

2011-04-05 23 : 59 : 57.547 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.547 시험 [574 : 207] 않음 : 이는 answer10이다.

2011-04-05 23 : 59 : 57.547 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.548 시험 [574 : 207] 않음 : 이는 answer11이다.

2011-04-05 23 : 59 : 57.548 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.548 시험 [574 : 207] 않음 : 이는 answer12이다.

2011-04-05 23 : 59 : 57.549 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.549 시험 [574 : 207] 않음 : 이는 answer13이다.

2011-04-05 23 : 59 : 57.549 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.550 시험 [574 : 207] 않음 : 이는 answer14이다.

2011-04-05 23 : 59 : 57.550 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.551 시험 [574 : 207] 않음 : 이는 answer15이다.

2011-04-05 23 : 59 : 57.551 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.551 시험 [574 : 207] 않음 : 이는 answer16이다.

2011-04-05 23 : 59 : 57.552 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.552 시험 [574 : 207] 않음 : 이는 answer17이다.

2011-04-05 23 : 59 : 57.552 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.553 시험 [574 : 207] 않음 : 이는 answer18이다.

2011-04-05 23 : 59 : 57.553 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.553 시험 [574 : 207] 않음 : 이는 answer19이다.

2011-04-05 23 : 59 : 57.554 시험 [574 : 207] (NULL)

2011-04-05 23 : 59 : 57.554 시험 [574 : 207] 않음 : 이는 answer20이다.

2011-04-05 23 : 59 : 57.554 시험 [574 : 207] (NULL)

답변

0
NSString *answerString = [[NSString alloc] initWithString:[[answer valueForKey:@"nameAnswer"] description]]; 

필요하지 않을 것이다. 이미 핵심 데이터 모델에서 문자열이라고 말한 것이므로 그렇게 처리하십시오.

NSString *answerString = [answer valueForKey:@"nameAnswer"]; 

그러나 왜 (null) 값이 표시되는지 잘 모르겠습니다. 대신 [arrayAnswer addObject : answerString]을 시도하십시오.

+0

배열 btw를 제대로 초기화했는지 기억해 둡니까? 당신도 그것을 할당 할 필요가 –

+0

하지만 지금은 내가 다른 줄 initializea 헤더 파일을 사용하여, 내가 배열을 변경하고 내가 만든 하나의 방법을 사용하여 시도해 볼게요 : NSMutableArray * arrayAnswer2 = [[NSMutableArray alloc] initWithCapacity : numberAnswer]; 그리고 지금은 작동하지만 ... 배열은 arrayAnswer와 다르다. 헤더 파일 NSMutableArray * arrayAnswer에 간단한 쓰기가있다. 어디 초기화합니까? – Piero

+0

'NSMutableArray * arrayAnswer'를 .h에 선언하는 것이 더 낫고 (더 쉽습니다),로드 메소드 (어느 것이 든간에)에서 초기화하고 메소드의 앞 부분에서 설명한 것처럼 직접 사용하는 것이 더 쉽습니다. 동일한 작업을 수행해야하는 두 개의 다른 배열을 혼합하는 것은 실제로 좋은 습관은 아닙니다. 내가 이해할 수있게 만들었나요?수정 : 귀하의 경우에, 나는 할당하지 않거나 귀하의 버튼 클릭에 전혀 그것을 초기화하지 않을 것입니다, 당신이 버튼을 여러 번 클릭하면 응용 프로그램 충돌로 이어질 수 있기 때문에 –