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

     2023-03-15     233

关键词:

【中文标题】从 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... 查看详情