关键词:
【中文标题】从 Swift 2.3 迁移到 Swift 3 错误消息【英文标题】:Migration from Swift 2.3 to Swift 3 error message 【发布时间】: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。
提前致谢。 雷姆兹。
【问题讨论】:
NSFetchedResultsController
in Swift 3 现在需要一个泛型类型声明。您能否在使用_uploadedSurveysController
的地方包含更多代码? (初始化为不是nil
)
只需尝试删除 '= nil',因为您的变量已经是可选的并且可以是 nil 或其他任何东西,因此无论何时要使用,在使用此控制器之前都会检查 nil。
嗨,Anni,我取出了 '= nil' 但没有做任何事情,出现了不同的错误。
【参考方案1】:
在将 Swift 2 项目升级到 Swift 3 后,我遇到了同样的错误消息。延迟实例化在 Swift 中变得更加简单,因此不再需要隐藏的 _variableName 属性。
如果你添加了你的属性定义的惰性属性,那么你可以指定一个功能块来运行以在属性被设置为 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 中延迟实例化的很好描述
【讨论】:
【参考方案2】:这里有更多代码。
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!
【讨论】:
您应该编辑原始问题以添加此信息。【参考方案3】:我认为这是因为 lazy
名称,它遵循与标准属性不同的规则。由于您已经自己实现了惰性实例化,因此 lazy
关键字是不必要的(无论如何也不打算以这种方式使用)。尝试删除它,看看它是否有效。
【讨论】:
嗨,鲍勃,我已经尝试过了,但似乎仍然是同样的错误。 Xcode 出现添加另一个问号来修复它。 顺便说一句,我刚刚删除了lazy,但留下了'= nil'。Swift 2.3 到 Swift 3.1 迁移 - Alamofire 请求错误
】Swift2.3到Swift3.1迁移-Alamofire请求错误【英文标题】:Swift2.3toSwift3.1Migration-Alamofirerequesterror【发布时间】:2017-07-2111:19:04【问题描述】:我正在将使用Swift2.3的现有项目转换为Swift3.1。到目前为止,我成功地按照Xcode的建议实施了... 查看详情
如何将 array.withUnsafeMutableBufferPointer 从 swift 2 迁移到 swift 3?
】如何将array.withUnsafeMutableBufferPointer从swift2迁移到swift3?【英文标题】:Howtomigratearray.withUnsafeMutableBufferPointerfromswift2toswift3?【发布时间】:2017-04-1415:35:48【问题描述】:我想使用来自thislink的代码在swif2中publicprotocolSGLImageTypetypea... 查看详情
NSData init?(contentsOf url: URL) 从 Swift 2 迁移到 Swift 3
】NSDatainit?(contentsOfurl:URL)从Swift2迁移到Swift3【英文标题】:NSDatainit?(contentsOfurl:URL)migrationfromSwift2toSwift3【发布时间】:2016-12-2220:38:07【问题描述】:iOS/Swift新手。我正在尝试将一个项目(只是通过NSDatainit()方法从URL获取内容)从... 查看详情
升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告
】升级到Xcode8并将语法从swift2.3转换为swift3.0后文件丢失警告【英文标题】:FilesmissingwarningafterupgradingtoXcode8andconvertingsyntaxfromswift2.3toswift3.0【发布时间】:2016-09-1618:57:19【问题描述】:我从Xcode7.3升级到Xcode8.0,并从swift2.3toswift3.0... 查看详情
Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)
】Alamofire自定义响应从Alamofirev1.3迁移到3.0(和Swift2语法)【英文标题】:AlamofirecustomreponsemigrationfromAlamofirev1.3to3.0(andSwift2syntax)【发布时间】:2015-11-1715:17:26【问题描述】:我正在将使用Alamofire1.3的项目从Swift1.1转换为Swift2.0。因... 查看详情
从 Swift 3.0 转换为 Swift 2.3
】从Swift3.0转换为Swift2.3【英文标题】:ConvertfromSwift3.0toSwift2.3【发布时间】:2016-12-1402:52:47【问题描述】:我有一个静态库,我将它从旧的Swift转换为Swift2.3,然后再转换为Swift3.0。现在我需要库的两个版本(2.3和3.0),但我忘记... 查看详情
将使用 Cocoapods 1.0.1 的 iOS 应用程序从 Swift 2.2 迁移到 3.0
】将使用Cocoapods1.0.1的iOS应用程序从Swift2.2迁移到3.0【英文标题】:MigratinganiOSapplicationusingCocoapods1.0.1fromSwift2.2to3.0【发布时间】:2016-09-2820:42:32【问题描述】:我目前正在将iOS应用从Swift2.2升级到3.0。我已将我所有的pod依赖项指... 查看详情
我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?
...2【问题描述】:在我的项目中,我将所有私有swift2.3文件迁移到swift3。我想使用我用swift2.3编写的遗留框架,直到它们有swift3版本。我尝试添加“使用旧版Swift版本=是”。清除/构建我的项目,但我仍然遇到一些麻烦, 查看详情
从 Swift 2 迁移到 Swift 3 期间的奇怪问题:初始化程序的参数名称与协议所需的名称不同
】从Swift2迁移到Swift3期间的奇怪问题:初始化程序的参数名称与协议所需的名称不同【英文标题】:WeirdissueduringmigrationfromSwift2toSwift3:Initializerhasdifferentargumentnamesfromthoserequiredbyprotocol【发布时间】:2018-05-1915:56:01【问题描述】:... 查看详情
错误:Swift 2.3 不支持核心数据代码生成
...收到了错误:CoreDataCodegenerationisnotsupportedforSwift2.3自从我迁移到Swift2.3后,我找不到任何关于这个问题的文档或以前的问题。CoreData在Swif 查看详情
迁移到 Swift 4 时,是不是需要将 3.0 更新到 3.2?
】迁移到Swift4时,是不是需要将3.0更新到3.2?【英文标题】:WhenmigratingtoSwift4,doIneedtoupdate3.0to3.2?迁移到Swift4时,是否需要将3.0更新到3.2?【发布时间】:2017-11-0701:46:05【问题描述】:我计划将我的Swift版本更新到Swift4和Xcode9,但... 查看详情
将核心数据从 Swift 迁移到 SwiftUI
】将核心数据从Swift迁移到SwiftUI【英文标题】:MigrateCoreDatafromSwifttoSwiftUI【发布时间】:2022-01-1814:56:59【问题描述】:我正在尝试将应用程序从Swift迁移到SwiftUI,但在处理CoreData时遇到了困难。我在同一个包标识符下运行Swift和Sw... 查看详情
“无下标成员”错误(迁移到 Swift 3)
】“无下标成员”错误(迁移到Swift3)【英文标题】:"Nosubscriptmembers"error(MigratingtoSwift3)【发布时间】:2016-10-0420:24:13【问题描述】:我目前正在将我的代码迁移到Swift3,并且遇到了一个我无法弄清楚的错误。observeValue(fo... 查看详情
从 swift 3 转换为 swift 2.3 或从 iPhone 上的应用程序获取源代码
】从swift3转换为swift2.3或从iPhone上的应用程序获取源代码【英文标题】:Convertfromswift3toswift2.3orgetsourcecodefromappontheiPhone【发布时间】:2016-09-2409:04:24【问题描述】:我的问题是,我在xCode8中转换为Swift3后,在一个项目中收到160个... 查看详情
Swift 2 到 Swift 3 迁移:对成员“下标”的模糊引用
】Swift2到Swift3迁移:对成员“下标”的模糊引用【英文标题】:Swift2toSwift3migration:Ambiguousreferencetomember\'subscript\'【发布时间】:2016-10-0515:00:10【问题描述】:我有一段从youtubeAPI解析JSON的代码。接收到的JSON对象存储在字典中,然... 查看详情
迁移到 Swift 3.0,构建问题
】迁移到Swift3.0,构建问题【英文标题】:MovingtoSwift3.0,buildingissue【发布时间】:2016-12-1607:52:58【问题描述】:关于将iOS应用程序迁移到Swift3.0的过程。我终于摆脱了(所有)语法错误。不过,我似乎还有一个很大的问题。以下... 查看详情
Swift 2 到 Swift 2.3 保护让和错误
】Swift2到Swift2.3保护让和错误【英文标题】:Swift2toSwift2.3guardletandforerrors【发布时间】:2016-10-2414:56:51【问题描述】:我有一个正在工作的项目,但是当打开它时,它给了我3个简单的错误。这是我的代码:1letlocation,letresponse,leter... 查看详情
从 Objective-C 迁移到 Swift:AFNetworking > Alamofire
】从Objective-C迁移到Swift:AFNetworking>Alamofire【英文标题】:MigratingfromObjective-CtoSwift:AFNetworking>Alamofire【发布时间】:2016-04-2012:59:00【问题描述】:我正在尝试将项目从Obj-C迁移到Swift,但在这部分卡住了:目标-C:-(void)novoLogin... 查看详情