我將代碼從swift 2.2遷移到Swift 2.3,同時遷移時我意識到在iOS 10中,NSFetchRequest現在是參數化類型。因此,我決定如下修改我的代碼,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)
現在,當我跑的代碼,並把破發點上fetchRequest初始化並打印其描述我「」關於執行進一步的代碼崩潰日誌崩潰
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: is not a valid NSFetchRequest.'
的卸下如果條件並保持它只是
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)
一切正常!
請告訴我與
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
}
問題,請你幫幫我,在此先感謝。
我也面臨着同樣的問題。你有沒有找到答案? – Ranjit
@Ranjit:雖然不是我觀察到的這種解決方案經常出現在模擬器中,並且在設備上正常工作,但不確定是iOS還是模擬器的bug :)最後在managedObjectContext.perform()或managedObjectContext.performWait ()有助於停止崩潰以及:) –
好的謝謝sandeep – Ranjit