Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios6 从CFStringRef保存NSString。弧_Ios6_Abaddressbook_Core Foundation - Fatal编程技术网

Ios6 从CFStringRef保存NSString。弧

Ios6 从CFStringRef保存NSString。弧,ios6,abaddressbook,core-foundation,Ios6,Abaddressbook,Core Foundation,我正在尝试保存firstName和lastname。 NSLog(名字)从通讯簿打印正确的值,但\u档案。firstName为空。 图像正在正确保存 ABAddressBookRef addressBook = ABAddressBookCreate(); for (TKAddressBook *ab in contacts) { NSNumber *personID = [NSNumber numberWithInt:ab.recordID]; ABRecordID abRe

我正在尝试保存
firstName
lastname
NSLog(名字)从通讯簿打印正确的值,但
\u档案。firstName
为空。 图像正在正确保存

ABAddressBookRef addressBook = ABAddressBookCreate();

for (TKAddressBook *ab in contacts) {
    NSNumber *personID = [NSNumber numberWithInt:ab.recordID];
    ABRecordID abRecordID = (ABRecordID)[personID intValue];
    ABRecordRef abPerson = ABAddressBookGetPersonWithRecordID(addressBook, abRecordID);

    NSString* firstName = nil;
    NSString* lastName = nil;


    // Check person image
    UIImage *personImage = nil;
    if (abPerson != nil && ABPersonHasImageData(abPerson)) {

        firstName = (__bridge NSString*)ABRecordCopyValue(abPerson,
                                                          kABPersonFirstNameProperty);
        NSLog(firstName);
        lastName = (__bridge NSString*)ABRecordCopyValue(abPerson,
                                                         kABPersonLastNameProperty);

        CFDataRef contactThumbnailData = ABPersonCopyImageDataWithFormat(abPerson, kABPersonImageFormatThumbnail);
        personImage = [UIImage imageWithData:(__bridge NSData*)contactThumbnailData];
        CFRelease(contactThumbnailData);
        [_document.managedObjectContext performBlock:^() {
            Dossier *dossier = [NSEntityDescription insertNewObjectForEntityForName:@"Dossier"
                                                             inManagedObjectContext:_document.managedObjectContext];

            _dossier.firstName = firstName;
            _dossier.lastName = lastName;

            dossier.photo = personImage;
        }];

    }
}
在这方面:

firstName = (__bridge NSString*)ABRecordCopyValue(abPerson,
        NSLog(firstName);                                                              kABPersonFirstNameProperty);

您的
NSLog
会中断语句。除非格式真的搞砸了

performBlock
中,您已将
名字和
姓氏指定给
\u档案
,而不是新创建的
档案
对象。

什么是
\u档案
?不应该是
dossier.firstName=firstName;dossier.lastName=lastName?\u档案是UIManagedDocument我认为这对解决问题没有帮助,但您应该在
ABRecordCopyValue
的返回值上使用
\u桥接传输
(或
CfBridgegRelease
)。如果
NSLog(@“%@”,firstName,lastName),会发生什么情况
在块内?因此您希望在新创建的
docsier*docsier
对象中保存
personImage
,但是
UIManagedDocument*\u docsier
中的
名字和
lastName
是另一个对象?