Ios NSFetchRequest核心数据Swift 3向后兼容性
我已在swift 3中转换了代码。我在应用程序中使用核心数据。如您所知,NSFetchRequest已更改。 在swift 2中: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
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()”的使用不明确。