无法将类型'[String]'的值分配给类型'String',如何解决此问题?



结构体包含这样一行:public var allergies: [String]?,使用newValue?.allergies调用,这一行也需要改变。

我想做的是过敏只需要接受一个String项目,它不需要担心解析多个项目的数组:

if let currentAllergies = newValue?.allergies {
allergies = currentAllergies  //Cannot assign value of type '[String]' to type 'String'
} else {
allergies = "" 
}

我尝试了很多东西,我试着打开变量,但没有运气。如何解决此问题?

当将字符串数组更改为单个字符串时,还需要解释作为字符串的最终结果应该是什么。它是用于显示还是仅用于数据存储。

字符串数组意味着你有

let allergies: [String] = [
"Skin allergy",
"Sun allergy",
"Food allergy"
]

,这可以表示为单个字符串,例如,用逗号分隔所有项目的总和,如

"Skin allergy, Sun allergy, Food allergy"

要做到这一点,您可以很容易地使用joined方法。

let allergyString = allergies.joined(separator: ", ")

你可以输入

allergies = newValue?.allergies.joined(separator: ", ") ?? ""

如果需要反转,可以使用分隔符

分隔组件
let allergyArray: [String] = allergyString.components(separatedBy: ", ")

但是你需要非常小心,因为分隔符可能是原始数据的一部分。例如,假设有以下内容:

let allergies: [String] = [
"Skin allergy",
"Severe, critical and fatal food allergy"
]

加入它会产生"Skin allergy, Severe, critical and fatal food allergy"。但是返回组件会将其拆分为

let allergies: [String] = [
"Skin allergy",
"Severe",
"critical and fatal food allergy"
]

要解决这个反向问题,您需要查看一些编码工具,如JSON和base64。但是我希望加入一个字符串已经解决了你的具体问题。

相关内容

最新更新