NSFetchRequest核心数据Swift 3向后兼容性

Rox*_*Rox 4 core-data nsfetchrequest ios swift3 ios10

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

let request = NSFetchRequest(entityName: "UnsyncedTask")
Run Code Online (Sandbox Code Playgroud)

在快速3:

let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest()
Run Code Online (Sandbox Code Playgroud)

我的问题是,它只支持ios 10.如何才能使ios兼容?我想要支持ios 9的NSFetchRequest,带有swift 3的ios 10.

Mar*_*n R 13

NSFetchRequest(entityName:)仍可在Swift 3中使用.您可以if #available在iOS 10/macOS 10.12或更高版本上使用较新的API,在较旧的OS版本上使用较旧的API:

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)
}
Run Code Online (Sandbox Code Playgroud)