2

使用以下方法,我可以立即在 iOS 5 上获得正确的订单,但在 iOS 6 和 7 上,在设置中切换后,或在重新启动应用程序后(关闭设置后),订单不会改变。

BOOL firstNameFirst = NO;

if (IOS_VERSION>=7) {
    firstNameFirst = (ABPersonGetCompositeNameFormatForRecord(NULL)==kABPersonCompositeNameFormatFirstNameFirst);
}else{
    firstNameFirst = (ABPersonGetCompositeNameFormat() == kABPersonCompositeNameFormatFirstNameFirst);
}

我错过了什么?

编辑:这个 bool 应该存储用户默认顺序,所以我可以订购名字和姓氏字符串,并以他在 iPhone 设置中设置的方式显示给用户。

EDIT2:IOS_VERSION宏工作完美,我使用断点检查它们,但无论设置/邮件、联系人、日历/联系人/显示顺序设置是什么,我总是得到YESforfirstNameFirst的值

4

2 回答 2

6

我希望对你有所帮助。

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);

BOOL firstNameFirst = NO;

if (IOS_VERSION>=7) {
    firstNameFirst = (ABPersonGetCompositeNameFormatForRecord(NULL)==kABPersonCompositeNameFormatFirstNameFirst);
}else{
    firstNameFirst = (ABPersonGetCompositeNameFormat() == kABPersonCompositeNameFormatFirstNameFirst);
}

if(addressBook != NULL) {
    CFRelease(addressBook);
}
于 2013-11-06T08:24:34.317 回答
0
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) 
{

    // Load resources for iOS 6.1 or earlier

} else 
{

    // Load resources for iOS 7 or later

}

这样做。参考由此而来。

这个链接

于 2013-10-30T13:36:14.023 回答