【发布时间】:2015-01-27 12:14:01
【问题描述】:
Crashlytics 称有几起崩溃是随机发生的。
请考虑以下代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("NewsfeedItemCell", forIndexPath: indexPath) as NewsfeedItemTableViewCell
let newsfeedItem = self.newsfeedItems[indexPath.row]
// This line gives crash: EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0000000000000000
let text = newsfeedItem.text as NSString
cell.descriptionLabel.text = text
return cell
}
这里是NewsfeedItem类:
class NewsfeedItem: NSManagedObject {
@NSManaged var date: NSDate
@NSManaged var sku: String
@NSManaged var text: String
var dataItem: DataItem?
}
PS:请注意NewsfeedItem.text 属性不是可选的,所以它不能是nil!
【问题讨论】:
-
很可能您在访问文本时访问的是 nil。尝试使用可选的 if 语法 if (let text = newsfeedItem.text) {//Your code}
-
self.newsfeedItems..??
-
这怎么可能?
text不是Optional -
即使对于可选的 Core Data 属性,Xcode(不幸的是)也会生成一个非可选的 Swift 属性(所以如果没有设置 Core Data 属性,它可以为 nil!) .请参阅Check if property is set in Core Data? 了解可能的解决方法。
-
@MartinR,这更接近答案,谢谢!会试试的
标签: ios swift exc-bad-access