Swift3 iOS 10中参数化的NSFetchRequest返回<;未初始化>;
我正在将我的代码从swift 2.2迁移到swift 2.3,同时我意识到在iOS 10中,NSFetchRequest现在是一种参数化类型。因此我决定修改我的代码如下:Swift3 iOS 10中参数化的NSFetchRequest返回<;未初始化>;,swift3,ios10,Swift3,Ios10,我正在将我的代码从swift 2.2迁移到swift 2.3,同时我意识到在iOS 10中,NSFetchRequest现在是一种参数化类型。因此我决定修改我的代码如下: var fetchRequest : NSFetchRequest<SomeEntity> if #available(iOS 10.0, *) { fetchRequest = SomeEntity.fetchRequest() as! NSFetchReq
var fetchRequest : NSFetchRequest<SomeEntity>
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
} else {
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
}
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
var fetchRequest:NSFetchRequest
如果可用(iOS 10.0,*){
fetchRequest=SomeEntity.fetchRequest()作为!NSFetchRequest
}否则{
fetchRequest=NSFetchRequest(entityName:“SomeEntity”)
}
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“名称”,升序:true)]
让appdelegate=UIApplication.shared.delegate为!AppDelegate
让SomeEntityArray=试试!appdelegate.managedObjectContext.fetch(fetchRequest)
现在,当我运行代码并将断点放在fetchRequest初始化上并打印其描述时,我在使用崩溃日志执行进一步的代码崩溃时得到“”
由于未捕获异常而终止应用程序
“NSInvalidArgumentException”,原因:“executeFetchRequest:错误:
不是有效的NSFetchRequest。'
关于删除if条件并保持其简单性
var fetchRequest : NSFetchRequest<SomeEntity>
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
var fetchRequest:NSFetchRequest
fetchRequest=NSFetchRequest(entityName:“SomeEntity”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“名称”,升序:true)]
让appdelegate=UIApplication.shared.delegate为!AppDelegate
让SomeEntityArray=试试!appdelegate.managedObjectContext.fetch(fetchRequest)
一切正常
有什么问题吗
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
}
if#可用(iOS 10.0,*){
fetchRequest=SomeEntity.fetchRequest()作为!NSFetchRequest
}
请帮助我,提前谢谢。以下是工作正常的代码:
let request=NSFetchRequest(entityName:“您的实体名”)
我也面临同样的问题。你找到答案了吗?@Ranjit:虽然不是我观察到的解决方案,但这在模拟器中经常发生,在设备上运行良好,但不确定是iOS或模拟器的错误:)最终在managedObjectContext.perform()或managedObjectContext.performWait()中包装fetch()或execute还有助于阻止崩溃:)您得到了此问题的确切解决方案。请使用此let request=NSFetchRequest(entityName:“Entity Name”)