联系人框架在读取 imageData 时引发异常
Contacts framework raises exception on reading of imageData
我尝试在 Objective-C 中使用 unifiedContactWithIdentifier:keysToFetch:error:
和 CNContactImageDataKey
重新获取 CNContact
后获取图像数据。
我正在使用 Xcode 7.0 构建于 iPhone 6 Plus 和 iOS 9.0.2.
在运行时我总是有相同的异常 CNPropertyNotFetchedException
甚至重新获取联系人并检查 imageData
调用 imageDataAvailable
.
代码如下:
if([currentNativeContact isKeyAvailable:CNContactImageDataKey] &&
currentNativeContact.imageDataAvailable) {
previewImage = [UIImage imageWithData:currentNativeContact.thumbnailImageData];
} else {
NSError *error;
currentNativeContact = [self.contactsStore unifiedContactWithIdentifier:currentNativeContact.identifier keysToFetch:@[CNContactImageDataKey] error:&error];
if(!error && currentNativeContact.imageDataAvailable)
previewImage = [UIImage imageWithData:currentNativeContact.thumbnailImageData];
}
您需要将 CNContactImageDataAvailableKey
、CNContactImageDataKey
和 CNContactThumbnailImageDataKey
键添加到 keysToFetch
。
@Eric 回答部分正确。我们需要在 keysToFetch 中添加 CNContactImageDataKey。否则,应用程序将在 imageData 上崩溃。
我尝试在 Objective-C 中使用 unifiedContactWithIdentifier:keysToFetch:error:
和 CNContactImageDataKey
重新获取 CNContact
后获取图像数据。
我正在使用 Xcode 7.0 构建于 iPhone 6 Plus 和 iOS 9.0.2.
在运行时我总是有相同的异常 CNPropertyNotFetchedException
甚至重新获取联系人并检查 imageData
调用 imageDataAvailable
.
代码如下:
if([currentNativeContact isKeyAvailable:CNContactImageDataKey] &&
currentNativeContact.imageDataAvailable) {
previewImage = [UIImage imageWithData:currentNativeContact.thumbnailImageData];
} else {
NSError *error;
currentNativeContact = [self.contactsStore unifiedContactWithIdentifier:currentNativeContact.identifier keysToFetch:@[CNContactImageDataKey] error:&error];
if(!error && currentNativeContact.imageDataAvailable)
previewImage = [UIImage imageWithData:currentNativeContact.thumbnailImageData];
}
您需要将 CNContactImageDataAvailableKey
、CNContactImageDataKey
和 CNContactThumbnailImageDataKey
键添加到 keysToFetch
。
@Eric 回答部分正确。我们需要在 keysToFetch 中添加 CNContactImageDataKey。否则,应用程序将在 imageData 上崩溃。