Swift中如何将数组元素格式化为指定格式的订单字符串?
解决Swift中外卖订单数组转指定格式字符串的问题
问题分析
你当前的代码存在两个核心问题:
- 变量名错误:代码中
dict应为dictionary,直接导致编译报错 - 元组数组无法直接拼接:
compactMap返回的是[(String, String)]类型的元组数组,而joined方法仅适用于字符串数组,无法直接处理元组
修正后的代码
guard let defaults = UserDefaults.standard.data(forKey: "itemlist"), let savedItems = try? JSONDecoder().decode([Order].self, from: defaults) else { return } // 将每个有效Order对象转换为"名称 价格"格式的字符串,同时过滤数据不完整的项 let orderItems = savedItems.compactMap { item in guard let name = item.name, let price = item.price else { return nil } return "\(name) \(price)" } // 拼接所有订单项为目标格式字符串 let orderString = orderItems.joined(separator: " ") let order = "Заказ: \(orderString)" print(order)
代码说明
- 安全处理可选值:用
guard解包name和price,避免强制解包!引发的崩溃,同时过滤掉数据不完整的订单项 - 单条订单格式化:将每个有效订单项转换为
"名称 价格"格式的独立字符串 - 整体拼接:通过
joined(separator: " ")将所有格式化后的字符串连接成你需要的最终格式
执行后会输出:
Заказ: Пепперони 45см/500р. Деревенская 45см/520р.
内容的提问来源于stack exchange,提问作者devon
相关产品推荐
相关产品推荐

