结构体包含这样一行: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。但是我希望加入一个字符串已经解决了你的具体问题。