Swift-无法分配类型为';[字符串]';输入';字符串';(Swift 4)

Swift-无法分配类型为';[字符串]';输入';字符串';(Swift 4),swift,Swift,在最后一行,它给出了错误“无法将“[String]”类型的值赋给“String”类型,我是Swift的初学者,我尝试了很多东西,但无法解决这个问题 func shortNameFromName (_ fullName: String) -> String{ var lowerCasedName = fullName.lowercased() var shortName = lowerCasedName.components(separatedBy: " ") ret

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

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

您的函数试图返回一个
字符串
,但实际尝试返回的值是一个
[String]

只需将其更改为:

func shortNameFromName (_ fullName: String) -> [String] {
    var lowerCasedName = fullName.lowercased()
    var shortName = lowerCasedName.components(separatedBy: " ")
    return shortName
}
或者,如果只想返回单个字符串值,则执行此操作以从字符串数组(或要返回的任何字符串)返回第一个对象


[0]
表示您希望通过其索引从数组返回哪个字符串

您的函数正在尝试返回一个
字符串
,但实际尝试返回的值是一个
[string]

只需将其更改为:

func shortNameFromName (_ fullName: String) -> [String] {
    var lowerCasedName = fullName.lowercased()
    var shortName = lowerCasedName.components(separatedBy: " ")
    return shortName
}
或者,如果只想返回单个字符串值,则执行此操作以从字符串数组(或要返回的任何字符串)返回第一个对象


[0]
表示要通过数组的索引从数组中返回的字符串

引用Apple文档:

组件(由以下内容分隔):

返回一个数组,该数组包含接收器中已被给定分隔符分割的子字符串

脱毛:

func组件(由分隔符分隔:字符串)->[字符串]

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

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

引用苹果文档:

组件(由以下内容分隔):

返回包含从接收器中包含被给定分隔符分隔的子字符串的数组

脱毛:

func组件(由分隔符分隔:字符串)->[字符串]

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

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

方法
组件(separatedBy:)
返回一个
字符串数组[string]

函数的
返回类型是
String
,而不是
[String]

因此,根据您的需求,有两种解决问题的方法

1。使用[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.first! //Make sure shortName is not empty before force unwrapping it
}
2。从shortName数组返回特定值,即

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.first! //Make sure shortName is not empty before force unwrapping it
}

方法
组件(separatedBy:)
返回一个
字符串数组[string]

函数的
返回类型是
String
,而不是
[String]

因此,根据您的需求,有两种解决问题的方法

1。使用[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.first! //Make sure shortName is not empty before force unwrapping it
}
2。从shortName数组返回特定值,即

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.first! //Make sure shortName is not empty before force unwrapping it
}