【发布时间】:2015-08-08 21:23:20
【问题描述】:
在 viewDidLoad 我调用
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 变量存在索引超出范围的问题。它声称数组中只有一项。有趣的是,这段代码在 iPad 上运行良好,但在 iPhone 上超出了索引范围。无论来自位置的什么值首先加载到数组中,我都只有一个。我不明白。这是时间不够用的问题吗。我该如何解决这个问题?
【问题讨论】:
-
你在
numberOfRowsInSection?返回什么值请注意,如果你传递给initWithObjects的任何变量为 nil,那么它将充当终止符,你将在数组中获得更少的元素.例如,如果 locate.city 为 nil,那么您的数组中将只有两个元素,交叉点侧和交叉点主 -
尝试查看
[[NSArray alloc] ..];中的每个对象值,可能返回了 nil,因此数组将停止添加其余对象。经常发生在我身上 -
我会检查 nil 。为什么这个问题会出现在 iPhone 而不是 iPad 上的任何想法。我的源数据是一样的。
-
我不知道为什么不同的设备有不同的结果。所有的对象都检查好了,而不是零?
-
我最终编写了一个函数,它将传入我的值并检查是否为零。如果它为零,它将返回一个空字符串。感谢您指出 nil 终止符。
标签: ios uitableview core-data nsarray