NSFetchRequest 核心数据 Swift 3 向后兼容性
NSFetchRequest Core Data Swift 3 Backward compatibility
我已经在 swift 中转换了我的代码 3. 我在我的应用程序中使用核心数据。如您所知,NSFetchRequest 已更改。
在 swift 2 中是:
let request = NSFetchRequest(entityName: "UnsyncedTask")
在swift 3:
let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest()
我的问题是,它只支持ios 10. 我怎样才能使它向后兼容ios?
我想要支持 ios 9、ios 10 和 swift 3 的 NSFetchRequest。
NSFetchRequest(entityName:)
在 Swift 3 中仍然可用。
您可以使用 if #available
在 iOS 10/macOS 10.12 上使用较新的 API
或更高版本,以及较旧的 API 在较旧的 OS 版本上:
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)
}
我已经在 swift 中转换了我的代码 3. 我在我的应用程序中使用核心数据。如您所知,NSFetchRequest 已更改。 在 swift 2 中是:
let request = NSFetchRequest(entityName: "UnsyncedTask")
在swift 3:
let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest()
我的问题是,它只支持ios 10. 我怎样才能使它向后兼容ios? 我想要支持 ios 9、ios 10 和 swift 3 的 NSFetchRequest。
NSFetchRequest(entityName:)
在 Swift 3 中仍然可用。
您可以使用 if #available
在 iOS 10/macOS 10.12 上使用较新的 API
或更高版本,以及较旧的 API 在较旧的 OS 版本上:
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)
}