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

Ios NSFetchRequest核心数据Swift 3向后兼容性,ios,core-data,swift3,nsfetchrequest,ios10,Ios,Core Data,Swift3,Nsfetchrequest,Ios10,我已在swift 3中转换了代码。我在应用程序中使用核心数据。如您所知,NSFetchRequest已更改。 在swift 2中: let request = NSFetchRequest(entityName: "UnsyncedTask") 在swift 3中: let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest() let-request:NSFetchRequest=Un

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

let request = NSFetchRequest(entityName: "UnsyncedTask")
在swift 3中:

let request:NSFetchRequest<NSFetchRequestResult> = UnsyncedTask.fetchRequest()
let-request:NSFetchRequest=UnsyncedTask.fetchRequest()
我的问题是,它只支持ios 10。如何使其向后兼容ios? 我想要支持ios 9、ios 10和swift 3的NSFetchRequest

NSFetchRequest(entityName:)
在Swift 3中仍然可用。 如果可用,您可以使用
在iOS 10/macOS 10.12上使用较新的API
或更高版本,以及旧操作系统版本上的旧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)
}
let请求:NSFetchRequest
如果可用(iOS 10.0、OSX 10.12,*){
request=UnsyncedTask.fetchRequest()
}否则{
request=NSFetchRequest(entityName:“UnsyncedTask”)
}
做{
let results=try context.fetch(请求)
对于结果中的任务{
// ...
}
}捕捉错误{
打印(错误。本地化描述)
}

不为我工作。我的iOS部署目标是9.2,我在上面的代码行
request=Settings.fetchRequest()
中有一个错误。错误是:无法将类型为“NSFetchRequest”的值分配给类型为“NSFetchRequest”
设置
只是从xCode中的模型生成的NSManagedObject7@MarcinKapusta:但您现在正在使用Xcode 8?我用一个新的Xcode 8项目测试了它。@MartinR是的,我现在用的是Xcode 8。我需要用xCode 8重新生成我的模型吗?@MarcinKapusta我强烈认为是这样。Xcode 8为每个实体创建一个fetchRequest方法。@MartinR对不起,我错了。现在我看到编译器抱怨“fetchRequest()”的使用不明确。