Ios Swift:在展开可选值时发现nil

Ios Swift:在展开可选值时发现nil,ios,swift,Ios,Swift,我知道为什么会发生这种错误,但我在这里很难找到解决方案。基本上,我是想从地址簿上得到某人的头像的缩略图。我得到数据,然后需要检查数据是否为零(换句话说,我们成功地获得了一张图像)。如果我们有它,那么我将它作为UIImage返回。该代码在objective-c中运行良好。在展开data=ABPerson…上的可选值时,移植的代码崩溃,并出现found nil var data :NSData? = NSData() var ref :ABRecordRef? = delegate

我知道为什么会发生这种错误,但我在这里很难找到解决方案。基本上,我是想从地址簿上得到某人的头像的缩略图。我得到数据,然后需要检查数据是否为零(换句话说,我们成功地获得了一张图像)。如果我们有它,那么我将它作为UIImage返回。该代码在objective-c中运行良好。在展开
data=ABPerson…
上的可选值时,移植的代码崩溃,并出现
found nil

    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!)!
    } 

ABPersonCopyImageDataWithFormat
返回类型为
非托管的不安全指针。你必须测试它

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