2011-04-05 54 views
0

我有一個問題,我有一個方法,當按下按鈕時從模型核心數據檢索信息,並填充數組與字符串retrived在實體核心數據選擇,但數組是空的,爲什麼...問題來填充一個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測試[574:207]列表中有:20個元素。

2011-04-05 23:59:57.540測試[574:207]答案:這是答案1。

2011-04-05 23:59:57.541測試[574:207](空)

2011-04-05 23:59:57.541測試[574:207]答:這是ANSWER2。

2011-04-05 23:59:57.541測試[574:207](空)

2011-04-05 23:59:57.542測試[574:207]答:這是ANSWER3。

2011-04-05 23:59:57.542測試[574:207](空)

2011-04-05 23:59:57.543測試[574:207]答:這是answer4。

2011-04-05 23:59:57.543測試[574:207](空)

2011-04-05 23:59:57.543測試[574:207]答:這是answer5。

2011-04-05 23:59:57.544測試[574:207](空)

2011-04-05 23:59:57.544測試[574:207]答:這是answer6。

2011-04-05 23:59:57.544測試[574:207](空)

2011-04-05 23:59:57.545測試[574:207]答:這是answer7。

2011-04-05 23:59:57.545測試[574:207](空)

2011-04-05 23:59:57.546測試[574:207]答:這是answer8。

2011-04-05 23:59:57.546測試[574:207](空)

2011-04-05 23:59:57.546測試[574:207]答:這是answer9。

2011-04-05 23:59:57.547測試[574:207](空)

2011-04-05 23:59:57.547測試[574:207]答:這是answer10。

2011-04-05 23:59:57.547測試[574:207](空)

2011-04-05 23:59:57.548測試[574:207]答:這是answer11。

2011-04-05 23:59:57.548測試[574:207](空)

2011-04-05 23:59:57.548測試[574:207]答:這是answer12。

2011-04-05 23:59:57.549測試[574:207](空)

2011-04-05 23:59:57.549測試[574:207]答:這是answer13。

2011-04-05 23:59:57.549測試[574:207](空)

2011-04-05 23:59:57.550測試[574:207]答:這是answer14。

2011-04-05 23:59:57.550測試[574:207](空)

2011-04-05 23:59:57.551測試[574:207]答:這是answer15。

2011-04-05 23:59:57.551測試[574:207](空)

2011-04-05 23:59:57.551測試[574:207]答:這是answer16。

2011-04-05 23:59:57.552測試[574:207](空)

2011-04-05 23:59:57.552測試[574:207]答:這是answer17。

2011-04-05 23:59:57.552測試[574:207](空)

2011-04-05 23:59:57.553測試[574:207]答:這是answer18。

2011-04-05 23:59:57.553測試[574:207](空)

2011-04-05 23:59:57.553測試[574:207]答:這是answer19。

2011-04-05 23:59:57.554測試[574:207](空)

2011-04-05 23:59:57.554測試[574:207]答:這是answer20。

2011-04-05 23:59:57.554測試[574:207](空)

回答

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

不應該是必要的。你已經在你的核心數據模型中說過它是一個字符串,所以就這樣對待它。

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

但是,我不知道爲什麼你會得到(空)值。改爲嘗試[arrayAnswer addObject:answerString]。

+0

你記得正確地初始化數組btw?你還需要分配它 – 2011-04-05 22:29:53

+0

我會嘗試所有,但現在我在頭文件中使用另一個initializa arrayAnswer,現在我改變了數組,並且我在該方法中創建了一個:NSMutableArray * arrayAnswer2 = [[NSMutableArray alloc] initWithCapacity :numberAnswer];現在工作...但數組它不同於arrayAnswer我有簡單的寫在頭文件NSMutableArray * arrayAnswer。我在哪裏初始化它? – Piero 2011-04-05 22:31:20

+0

在你的.h中聲明'NSMutableArray * arrayAnswer'更好(也更容易),在你的load方法中初始化它(可能是它的任何一個)並直接使用它,就像我之前在方法中說過的那樣。混合兩個不同的陣列應該做同樣的事情並不是很好的做法。我讓自己可以理解嗎?編輯:在你的情況下,我不會分配或初始化它,因爲它可能導致應用程序崩潰,如果你多次單擊按鈕 – 2011-04-05 22:37:01