NSFetchRequest Core Data Swift 3向后兼容性 [英] NSFetchRequest Core Data Swift 3 Backward compatibility
问题描述
我已经转换我的代码在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屋!