NSFetchRequest Core Data Swift 3向后兼容性 [英] NSFetchRequest Core Data Swift 3 Backward compatibility

查看:191
本文介绍了NSFetchRequest Core Data Swift 3向后兼容性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经转换我的代码在swift 3.我在我的应用程序中使用核心数据。如你所知,NSFetchRequest已更改。
在swift 2中是:

I have converted my code in swift 3. I am using core data in my application. As you know, NSFetchRequest has been changed. In swift 2 it was:

let request = NSFetchRequest(entityName: "UnsyncedTask")

在swift 3中:

let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest()

我的问题是,它只支持ios 10.如何使向后兼容ios?
我想要NSFetchRequest它支持ios 9,ios 10与swift 3.

My question is, It only supports ios 10. How can I make it backward ios compatible? I want NSFetchRequest which supports ios 9, ios 10 with swift 3.

推荐答案

NSFetchRequest (entityName:)在Swift 3中仍然可用。
如果#available 在iOS 10/10上使用较新的API,您可以使用 macOS 10.12
或更高版本,旧操作系统版本上的旧API:

NSFetchRequest(entityName:) is still available in Swift 3. You can use if #available to use the newer API on iOS 10/macOS 10.12 or later, and the older API on older OS versions:

let request: NSFetchRequest<UnsyncedTask>
if #available(iOS 10.0, OSX 10.12, *) {
    request = UnsyncedTask.fetchRequest()
} else {
    request = NSFetchRequest(entityName: "UnsyncedTask")
}
do {
    let results = try context.fetch(request)
    for task in results {
        // ...
    }
} catch let error {
    print(error.localizedDescription)
}

这篇关于NSFetchRequest Core Data Swift 3向后兼容性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆