【问题标题】:Swift - Cannot assign value of type '[String]' to type 'String' (Swift 4)Swift - 无法将类型“[String]”的值分配给类型“String”(Swift 4)
【发布时间】:2017-10-05 22:22:53
【问题描述】:

在最后一行,它给出了错误“无法将类型 '[String]' 的值分配给类型 'String'”,我是 Swift 的初学者,我尝试了很多东西,但无法解决这个问题

func shortNameFromName (_ fullName: String) -> String{
    var lowerCasedName = fullName.lowercased()
    var shortName = lowerCasedName.components(separatedBy: " ")
    return shortName
}

【问题讨论】:

    标签: swift


    【解决方案1】:

    您的函数正在尝试返回 String,但您实际尝试返回的值是 [String]

    只需将其更改为:

    func shortNameFromName (_ fullName: String) -> [String] {
        var lowerCasedName = fullName.lowercased()
        var shortName = lowerCasedName.components(separatedBy: " ")
        return shortName
    }
    

    或者,如果您只想返回单个字符串值,则执行此操作以返回字符串数组中的第一个对象(或您要返回的任何字符串)

    func shortNameFromName (_ fullName: String) -> String{
        var lowerCasedName = fullName.lowercased()
        var shortName = lowerCasedName.components(separatedBy: " ")
        return shortName[0]
    }
    

    [0] 表示您想通过它的索引从数组中返回哪个字符串

    【讨论】:

      【解决方案2】:

      components(separatedBy:) 方法返回一个string array [String]。

      你函数的return type 是String 而不是[String]

      因此,根据您的要求,有两种方法可以解决问题。

      1.使用 [String] 作为函数的返回类型,即

      func shortNameFromName (_ fullName: String) -> [String]
      {
          var lowerCasedName = fullName.lowercased()
          var shortName = lowerCasedName.components(separatedBy: " ")
          return shortName
      }
      

      2。从 shortName 数组中返回一个特定的值,即

      func shortNameFromName (_ fullName: String) -> String
      {
          var lowerCasedName = fullName.lowercased()
          var shortName = lowerCasedName.components(separatedBy: " ")
          return shortName.first! //Make sure shortName is not empty before force unwrapping it
      }
      

      【讨论】:

        【解决方案3】:

        引用苹果文档:

        组件(separatedBy:)

        返回一个数组,其中包含来自接收方的子字符串,这些子字符串已被给定的分隔符分割。

        声明:

        func components(separatedBy separator: String) -> [String]

        所以你的函数应该是这样的:

        func shortNameFromName (_ fullName: String) -> [String] {
            var lowerCasedName = fullName.lowercased()
            var shortName = lowerCasedName.components(separatedBy: " ")
            return shortName
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          • 1970-01-01
          • 2015-10-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多