Ios ABAddressBook到CNContact应用程序的转换
我正在开发一款应用程序,该应用程序即将推出,但使用的是ABAddressBook框架。随着iOS9中ABAddressBook的弃用,我是否需要检查用户的iOS版本,并对iOS9之前的用户使用ABAddressBook,对iOS9用户使用CNContactIos ABAddressBook到CNContact应用程序的转换,ios,contacts,abaddressbook,ios9,Ios,Contacts,Abaddressbook,Ios9,我正在开发一款应用程序,该应用程序即将推出,但使用的是ABAddressBook框架。随着iOS9中ABAddressBook的弃用,我是否需要检查用户的iOS版本,并对iOS9之前的用户使用ABAddressBook,对iOS9用户使用CNContact 其他人是怎么处理的?我以前从未遇到过这样的情况 我也一直在处理和研究这个问题,我选择按照你的建议去做;检查用户的iOS版本,执行以下操作: NSString *version = [[UIDevice currentDevice] syste
其他人是怎么处理的?我以前从未遇到过这样的情况 我也一直在处理和研究这个问题,我选择按照你的建议去做;检查用户的iOS版本,执行以下操作:
NSString *version = [[UIDevice currentDevice] systemVersion];
BOOL isVersion8 = [version hasPrefix:@"8."];
BOOL isVersion7 = [version hasPrefix:@"7."];
//...
…根据您决定支持的应用程序版本继续
然后,我做了一个检查,要么在iOS 9之前使用Addressbook框架,要么在iOS 9及以后使用Contacts框架
if(isVersion7 || isVersion8){
//Use AddressBook
}
else{
//Use Contacts
}
这是我能想到的最好的处理弃用业务的方法…弃用并不意味着删除。只需将链接到这两个框架作为可选选项,并开始设计能够处理这两个框架的数据工作流。另外,请注意CNContact是新的,充满了bug 一旦你认为你的应用程序经过了重构,iOS升级到了9.1,就给它开绿灯 如何知道系统是否支持功能 1) 检查类是否存在
if(NSClassFromString(@"CNContact")) {
// Do something
}
对于弱链接类,直接向类发送消息是安全的。值得注意的是,这适用于没有明确链接为“必需”的框架。对于缺少的类,表达式的计算结果为nil
(二)
#如果没有NSFoundation版本号(iOS)9
#def NSFoundationVersionNumber\u iOS\u 9编号
#恩迪夫
if(楼层(NSFoundationVersionNumber)
这是正确的检查方法。您找到处理此问题的方法了吗?我很想知道每个人是如何处理此问题的。不,我仍然没有找到答案。已经两周了,我认为这是唯一的选项,因此我将此标记为已回答。如果出现更好的选项,我将更改它。谢谢,詹姆斯!
#ifned NSFoundationVersionNumber_iOS_9
#def NSFoundationVersionNumber_iOS_9 NUMBER
#endif
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9) {
// Use address book
} else {
// Use contact framework
}
if #available(iOS 9, *)
{
// iOS 9 - CNContact
}
else
{
// iOS 8 - ABAddressBook
}