gpt4 book ai didi

swift - 从 Swift 2.3 迁移到 Swift 3 错误消息

转载 作者:行者123 更新时间:2023-11-28 16:05:08 24 4
gpt4 key购买 nike

我一直在尝试将 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。

提前致谢。雷姆齐。

最佳答案

在将 Swift 2 项目升级到 Swift 3 后,我遇到了同样的错误消息。延迟实例化在 Swift 中变得更简单,因此不再需要隐藏的 _variableName 属性。

如果您在属性定义中添加惰性属性,那么您可以指定一个功能 block 来运行以在属性被设置为 nil 时对其进行初始化。

fileprivate lazy var uploadedSurveysController: NSFetchedResultsController<NSFetchRequestResult> = {

var fetchRequest<NSFetchRequestResult> = NSFetchedResultsController(fetchRequest: coreDataHelper.mailedAssetsFetchRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: "section2Identifier", cacheName: nil)

do {
try fetchedResultsController.performFetch()
} catch let error as NSError { Logger.sharedInstance.logMessage("\(#function) Uploaded Surveys Fetching Error: \(error.userInfo)") }

return fetchedResultsContoller
}()

我在 a blog entry by Mike Buss 中找到了关于 Swift 中惰性实例化的很好的描述。

关于swift - 从 Swift 2.3 迁移到 Swift 3 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com