2015-08-08 62 views
0

在viewDidLoad中我稱之爲NSArray在TableView調用之前沒有完成?

if (self.selectedObjectID) { 
    CoreDataHelper *cdh = [(AppDelegate *)[[UIApplication sharedApplication] delegate] cdh]; 
    Location *locate = (Location*)[cdh.context existingObjectWithID:self.selectedObjectID error:nil]; 


    self.addressValue = [ 
     [NSArray alloc] initWithObjects:locate.intersectionMain, 
     locate.intersectionSide, 
     locate.city, 
     locate.zipCode, 
     locate.county, 
     locate.stateProvince, 
     locate.country, 
     locate.intersectionID, 
     nil 
    ]; 
} 

通過表視圖調用時間:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我得到一個問題與指數超越界限在我addressValue變量。它聲稱陣列中只有1個項目。有趣的是,這個確切的代碼在iPad上效果很好,但是它的索引超出了iPhone的界限。無論從位置的什麼價值首先加載到陣列,我只有一個。我不明白。這是一個耗盡時間的問題。我怎樣才能解決這個問題?

+1

你在'numberOfRowsInSection?'中返回的值是什麼?請注意,如果你傳遞給'initWithObjects'的任何變量都是零,那麼它將作爲終止符,並且你的數組中的元素將會減少。例如,如果locate.city爲零,那麼你將只有兩個元素在你的數組中,交叉點和交叉點主 – Paulw11

+1

嘗試查看你的'[[NSArray alloc] ..]中的每個對象值;'可能返回零的東西,因此數組將停止添加剩餘的對象。發生在我身上很多 – ErickES7

+0

我會檢查零。任何想法爲什麼這個問題會顯示在iPhone上,而不是iPad上。我的源數據是一樣的。 – jmr1706

回答

0

來自NSArray的模型數據應該始終反映UITableViewDatasource中使用的內容。爲此,您應該使用加載值或空數組的數組,但如果它在UITableViewDatasource方法中使用,則不能爲零。

相關問題