首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ABAddressBook到CNContact应用程序的转换

ABAddressBook到CNContact应用程序的转换
EN

Stack Overflow用户
提问于 2015-08-14 06:01:30
回答 3查看 1.3K关注 0票数 5

我正在开发一个即将启动但使用ABAddressBook框架的应用程序。由于ABAddressBook在iOS9中不受欢迎,我是否需要检查用户的iOS版本,并为预iOS9用户使用ABAddressBook,为iOS9用户使用CNContact?

其他人怎么处理这件事?我以前从没遇到过这样的情况。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-27 16:08:55

我也一直在处理和研究这个问题,我选择的是您的建议;查看用户的iOS版本,做以下事情:

代码语言:javascript
复制
NSString *version = [[UIDevice currentDevice] systemVersion];
BOOL isVersion8 = [version hasPrefix:@"8."];
BOOL isVersion7 = [version hasPrefix:@"7."];
//...

...continuing基于您决定支持的应用程序版本。

然后,我进行检查,要么在iOS 9之前使用Addressbook框架,要么使用iOS 9及更高版本的联系人框架。

代码语言:javascript
复制
if(isVersion7 || isVersion8){
    //Use AddressBook
   }
else{
    //Use Contacts
}

这是我能想到的最好的方法来处理这个贬义的事务.

票数 4
EN

Stack Overflow用户

发布于 2015-09-30 09:16:34

不赞成并不意味着被删除。只需将两个框架的链接作为可选的,并开始设计能够处理这两个框架的数据工作流。此外,请注意,CNContact是新的,充满了错误。

一旦你认为你的应用程序是重构的,iOS进化到9.1,就给它开个绿灯

如何知道系统是否支持功能

1)检查类是否存在

代码语言:javascript
复制
if(NSClassFromString(@"CNContact")) {
    // Do something
}

对于弱链接类,直接向类发送消息是安全的。值得注意的是,这适用于没有显式链接为"Required“的框架。对于缺少的类,表达式的计算结果为零。

2)

代码语言:javascript
复制
#ifned NSFoundationVersionNumber_iOS_9 
 #def NSFoundationVersionNumber_iOS_9 NUMBER
#endif

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9) {
   // Use address book
} else {
   // Use contact framework
}

在模拟器中运行应用程序以查找NSFoundationVersionNumber常量

票数 2
EN

Stack Overflow用户

发布于 2015-12-13 14:41:19

代码语言:javascript
复制
if #available(iOS 9, *)
{
   // iOS 9 - CNContact
}
else
{
  // iOS 8 - ABAddressBook
}

这是检查的正确方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32003250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档