访问String属性时的EXC_BAD_ACCESS

时间:2015-01-27 12:14:01

标签: ios swift exc-bad-access

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

2 个答案:

答案 0 :(得分:1)

您确定您的NewsfeedItem文字不是零吗?如果你不先检查

if let text = newsfeedItem.text as? NSString{
    cell.descriptionLabel.text = text
}

答案 1 :(得分:0)

我对swift没有任何想法。 但该例外明确表示其关于访问非String值 。这意味着您访问的是nil对象,或者不是字符串对象。

可能self.newsfeedItemsNewsfeedItem的对象,所以你试图访问它的(iVar)字符串。