• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - ABPersonSocialProfile 崩溃应用

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:14:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在向 ABRecordRef 添加新的社交资料时遇到问题。它总是在 ABAdressBookSave 上返回崩溃 "[__NSCFString count]: 无法识别的选择器发送到实例"

ABMultiValueRef social = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
if(contact.socialTwitter != nil)
    ABMultiValueAddValueAndLabel(social, (__bridge CFTypeRef)([NSDictionary dictionaryWithObjectsAndKeys:
                                                               (NSString*)kABPersonSocialProfileServiceTwitter, kABPersonSocialProfileServiceKey,
                                                               (__bridge CFStringRef)contact.socialTwitter, kABPersonSocialProfileUsernameKey,
                                                               nil]), kABPersonSocialProfileServiceTwitter, NULL);


ABRecordSetValue(record, kABPersonSocialProfileProperty, social, &error);
CFRelease(social);



Best Answer-推荐答案


我在保存新联系人时遇到了同样的问题。看来您无法像这样保存所有属性。下面的代码对我有用。

ABRecordRef aRecord = ABPersonCreate(); 
            CFErrorRef  anError = NULL;

            // Username
            ABRecordSetValue(aRecord, kABPersonFirstNameProperty, username, &anError);

            // Phone Number.
            ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType);
            ABMultiValueAddValueAndLabel(multi, (CFStringRef)usercontact, kABWorkLabel, NULL);
            ABRecordSetValue(aRecord, kABPersonPhoneProperty, multi, &anError);
            CFRelease(multi);

            // Company
            ABRecordSetValue(aRecord, kABPersonDepartmentProperty, usercompany, &anError);

            // email
            NSLog(useremail);
            ABMutableMultiValueRef multiemail = ABMultiValueCreateMutable(kABMultiStringPropertyType);
            ABMultiValueAddValueAndLabel(multiemail, (CFStringRef)useremail, kABWorkLabel, NULL);
            ABRecordSetValue(aRecord, kABPersonEmailProperty, multiemail, &anError);
            CFRelease(multiemail);

            // website
            NSLog(userwebsite);
            ABMutableMultiValueRef multiweb = ABMultiValueCreateMutable(kABMultiStringPropertyType);
            ABMultiValueAddValueAndLabel(multiweb, (CFStringRef)userwebsite, kABWorkLabel, NULL);
            ABRecordSetValue(aRecord, kABPersonURLProperty, multiweb, &anError);
            CFRelease(multiemail);

            // Function
            ABRecordSetValue(aRecord, kABPersonJobTitleProperty, userrole, &anError);

            if (anError != NULL)
                NSLog(@\"error while creating..\");

            CFStringRef personname, personcompind, personemail, personfunction,  personwebsite, personcontact;

            personname = ABRecordCopyValue(aRecord, kABPersonFirstNameProperty); 
            personcompind = ABRecordCopyValue(aRecord, kABPersonDepartmentProperty); 
            personfunction = ABRecordCopyValue(aRecord, kABPersonJobTitleProperty); 
            personemail = ABRecordCopyValue(aRecord, kABPersonEmailProperty);
            personwebsite = ABRecordCopyValue(aRecord, kABPersonURLProperty);
            personcontact  = ABRecordCopyValue(aRecord, kABPersonPhoneProperty); 

            ABAddressBookRef addressBook; 
            CFErrorRef error = NULL; 
            addressBook = ABAddressBookCreate(); 

            BOOL isAdded = ABAddressBookAddRecord (addressBook, aRecord, &error);

            if(isAdded){

                NSLog(@\"added..\");
            }
            if (error != NULL) {
                NSLog(@\"ABAddressBookAddRecord %@\", error);
            } 
            error = NULL;

            BOOL isSaved = ABAddressBookSave (addressBook, &error);

            if(isSaved) {

                NSLog(@\"saved..\");
                UIAlertView *alertOnChoose = [[UIAlertView alloc] initWithTitle\"hone added successfully to your addressbook\" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles\"Ok\", nil];
                [alertOnChoose show];
                [alertOnChoose release];
            }

            if (error != NULL) {

                NSLog(@\"ABAddressBookSave %@\", error);
                UIAlertView *alertOnChoose = [[UIAlertView alloc] initWithTitle\"Unable to save this time\" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles\"Ok\", nil];
                [alertOnChoose show];
                [alertOnChoose release];
            } 

            CFRelease(aRecord); 
            CFRelease(personname);
            CFRelease(personcompind);
            CFRelease(personcontact);
            CFRelease(personemail);
            CFRelease(personfunction);
            CFRelease(personwebsite);  
            CFRelease(addressBook);

关于ios - ABPersonSocialProfile 崩溃应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17976266/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap