2011-03-27 54 views
0

我想從我正在使用NSFetchedResultsController的獲取請求中獲取一個隨機對象。這是我有:使用NSFetchedResultsController來獲取一個隨機對象

int randIndex = arc4random() % [[_fetchedResultsController fetchedObjects] count]; 
randomObject = [_fetchedResultsController objectAtIndex:randIndex]; 

但是,我不認爲我這樣做是正確的,因爲它導致崩潰。有人能給我一些建議嗎?

+0

什麼樣的崩潰? randIndex的價值是什麼?伯爵的價值是什麼? – amattn 2011-03-27 05:35:15

+0

我只是試圖用count從NSFetchedResultsController中獲取對象的數量。我拿這個數字,使用arc4random(),然後得到一個隨機的鍵,然後我用它從控制器中選擇一個隨機對象。當然,有沒有更好的方法來做到這一點? – 2011-03-27 05:43:19

回答

3

試試這個:

int randIndex = arc4random() % [[_fetchedResultsController fetchedObjects] count]; 
randomObject = [[_fetchedResultsController fetchedObjects] objectAtIndex:randIndex]; 

的崩潰是因爲NSFetchedResultsController不響應-objectAtIndex :.

+0

很好的捕獲。我較早看過這個問題,並沒有發現錯誤。 – 2011-03-27 06:31:10

+0

感謝您的發現!我也意識到什麼原因導致奇怪的崩潰沒有警告 - 我有NSLog測試行試圖用%@打印randIndex時,我應該使用%i。 – 2011-03-27 10:01:51