Swift中如何检查数组是否包含待追加的动态字符串值
解决数组中检查动态生成字符串是否存在的问题
我明白你的需求啦——你想在把动态生成的拼接字符串追加到数组前,先检查这个完整的字符串是否已经存在于数组中,但当前代码里的判断逻辑搞错了检查对象。
问题分析
你当前的代码里,array.contains(km)是在检查数组中是否存在单独的km字符串(比如示例里的"1"),但你实际要验证的是km + "Kilometers" + "=" + meters + "meters"这个完整的拼接结果是否已经在数组里,这两者完全不是一回事。
解决方案
核心思路是:先把要追加的完整字符串提前生成并存储到变量中,再用这个变量去做存在性检查,之后再决定是否追加或者执行其他逻辑。
修改后的示例代码
var km: String = "1" var meters: String = "1000" var array: [String] = [] // 1. 提前生成要插入的完整字符串,用字符串插值让拼接更清晰 let newEntry = "\(km)Kilometers=\(meters)meters" // 2. 检查数组是否已经包含这个完整条目 if array.contains(newEntry) { // 如果存在,执行你需要的逻辑,比如提示用户、跳过追加等 print("这个条目已经存在啦!") } else { // 如果不存在,再追加到数组中 array.append(newEntry) print("条目已成功添加") }
额外优化建议
- 用字符串插值
\(变量)替代字符串拼接+,代码可读性更强,也不容易出错 - 如果后续需要频繁做这类检查,或者数组元素很多,可以考虑用
Set来存储这些条目,因为Set的contains操作时间复杂度是O(1),比数组的O(n)效率更高(不过如果需要保持元素的插入顺序,还是用数组更合适)
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

