【发布时间】:2016-11-03 11:15:47
【问题描述】:
我一直在尝试将 Swift 项目迁移到最新的 Swift 版本。
fileprivate lazy var _uploadedSurveysController: NSFetchedResultsController? = nil
此代码行给出以下错误。
Nil cannot initialize the specified type NSFetchedResultsController?
Xcode 提出了一个修复建议,即在 NSFetchedResultsController 旁边添加另一个问号。当我说是时,它给出了相同的错误并提出了一个添加另一个问号的修复程序。
这里有更多代码
fileprivate var uploadedSurveysController: NSFetchedResultsController {
guard _uploadedSurveysController == nil else { return _uploadedSurveysController! }
_uploadedSurveysController = NSFetchedResultsController(fetchRequest: coreDataHelper.mailedAssetsFetchRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: "section2Identifier", cacheName: nil)
do {
try _uploadedSurveysController!.performFetch()
} catch let error as NSError { Logger.sharedInstance.logMessage("\(#function) Uploaded Surveys Fetching Error: \(error.userInfo)") }
return _uploadedSurveysController!
}
任何帮助将不胜感激。
只是为了让你知道。我对 Swift 很陌生,正在尝试将现有项目从 Swift 2.3 更新到 3。
提前致谢。 雷姆兹。
【问题讨论】:
-
NSFetchedResultsControllerin Swift 3 现在需要一个泛型类型声明。您能否在使用_uploadedSurveysController的地方包含更多代码? (初始化为不是nil) -
只需尝试删除 '= nil',因为您的变量已经是可选的并且可以是 nil 或其他任何东西,因此无论何时要使用,在使用此控制器之前都会检查 nil。
-
嗨,Anni,我取出了 '= nil' 但没有做任何事情,出现了不同的错误。
标签: swift migration swift3 swift2.3