Swift3 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

我正在将我的代码从swift 2.2迁移到swift 2.3,同时我意识到在iOS 10中,NSFetchRequest现在是一种参数化类型。因此我决定修改我的代码如下:

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