Swift:在展开可选值时找到nil

时间:2015-02-26 14:24:05

标签: ios swift

我知道为什么会出现这种错误,但我在这里找不到解决方案。基本上我试图从地址簿中获取某人头像的缩略图。我得到数据,然后需要检查数据是不是nil(换句话说,我们成功获得了一个图像)。如果我们拥有它,那么我将它作为UIImage返回。该代码在objective-c中运行良好。移植的代码因found nil while unwrapping an optional value上的data = ABPerson...错误而崩溃。

    var data :NSData? = NSData()

    var ref :ABRecordRef? = delegate.localContacts.objectForKey(email)

    if ref != nil {
        data = ABPersonCopyImageDataWithFormat(ref, kABPersonImageFormatThumbnail).takeRetainedValue()
    }

    if data?.length > 0 {
            return UIImage(data: data!)!
    } 

1 个答案:

答案 0 :(得分:2)

ABPersonCopyImageDataWithFormat返回类型为Unmanaged<CFData>!的不安全指针。你必须测试它。

if let ref = ref {
    let img = ABPersonCopyImageDataWithFormat(ref, kABPersonImageFormatThumbnail)
    if img != nil {
        data = img.takeRetainedValue()
    }
}