NSFetchRequest核心数据Swift 3向后兼容

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

let request = NSFetchRequest(entityName: "UnsyncedTask") 

在迅捷3:

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

我的问题是,它只支持ios 10.我怎样才能使其后向兼容? 我希望支持ios 9的NSFetchRequest,使用swift 3的ios 10。

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) }