为什么从未使用修复'变量'错误的初始化';'导致新错误

时间:2016-02-13 04:27:15

标签: ios swift

我正在从一个教程中学习,我必须转换为最新版本的Swift。它大部分时间都很好,除了我发出警告:“从未使用变量'错误'的初始化;考虑将其赋值替换为'_'或删除。这是代码:

  class func loadMembersFromFile(path:String) -> [Member]
     {
      var members:[Member] = []

      var error:NSError? = nil
      if let data = try? NSData(contentsOfFile: path, options:[]) ,
      json = (try? NSJSONSerialization.JSONObjectWithData(data, options: [])) as? NSDictionary,
      team = json["team"] as? [NSDictionary] {
      for memberDictionary in team {
      let member = Member(dictionary: memberDictionary)
      members.append(member)
      }
    }
   return members
   }

我理解错误,所以我遵循Xcode的建议并将违规行更改为:

_:NSError? = nil

导致两个新错误; '一行上的连续陈述必须用';'分隔和'预期的表达'

很明显这些都是语法错误,所以我希望这不是一个愚蠢的问题,而是连续的陈述?另外,为什么这些错误只会在我改变Xcode建议之后出现?

2 个答案:

答案 0 :(得分:2)

我自己尝试过,似乎Xcode的“建议”也删除了let关键字,而不是将其保留为新的变量名称_

由于不再有任何变量赋值,因此会出现语法错误。 Xcode看到的两个连续语句是_:NSError = nil。所以,它认为你犯了一个错误而忘记在同一行(Consecutive statements on the same line must be replace by a ';')的两个语句之间加一个分号。它建议你在那里加一个分号,当你这样做时,它意识到_:NSError = nil都不是有效的表达式,而是用Expected Expression告诉你。

但这一切都不重要,因为错误处理已从NSErrors迁移到try/catch并且不再使用NSError。你可以删除它。 PS,您应该在try块中放置do个语句的任何代码,然后处理catch块中的任何错误

答案 1 :(得分:-1)

只需删除整行。我认为您在进行更改后遇到的错误是因为您还删除了var关键字?无论哪种方式,只需删除该行,您就会处于良好状态。