连接两个字符串 - Swift

join two string - Swift

我有一个适用于我的商店和购物车的应用程序 viewController 我有一个 tableView 单元格,向用户显示他们添加到购物车的内容,我想加入带有名称的商品数量,我试过了此代码可以 100% 工作,但不是像这样显示它 --> item1(3 件)、item2(4 件)、item3(9 件).. 它像 item1、item2、item3 (349) 那样显示

这是我的 tableViewController 代码

import UIKit


class cartTableViewController: UITableViewController {



@IBOutlet var priceLabel: UILabel!
@IBOutlet var totalOrder: UILabel!
@IBOutlet var cartTableView: UITableView!

override func viewDidLoad() {
    
    super.viewDidLoad()
    
    
  
}

// MARK: - Table view data source
override func viewWillAppear(_ animated: Bool) {
    
    priceLabel.text = "\(userData.selectedItemsPrice())"

   totalOrder.text =  "\(userData.allItemsToString()) (\(userData.allItemsToAmount())" // this is the line i use it  

 
    
    super.viewWillAppear(animated)
}
}

结构代码:

import UIKit

struct userData {
static var selectedItem: Item? = nil
static var selectedItems: [Item] = []


static func allItemsToAmount() -> String {
    var allAmount: [String] = []
    for item in selectedItems {
        allAmount.append(item.amount)
    }
    return allAmount.joined(separator: "")
}

static func selectedItemsPrice() -> Double {
    var result: Double = 0
       for item in selectedItems {
        result = result + item.price
       }
       return result

}


static func storeName() -> String {
    var Store: [String] = []
    for item in selectedItems {
        Store.append(item.Store)
    }
    
    return Store.joined()
    
    
}


static func allItemsToString() -> String {
    var allNames: [String] = []
    for item in selectedItems {
        allNames.append(item.name)
    }
    
    return allNames.joined(separator: ","  )

    
}


}

struct Item: Equatable {
/// All of the animals
static let items : [Item] = {
    let bear: Item = .init(image: UIImage(named: "bear"), name: "bear", price: 1, amount: "", Store: "")
    return [bear]
    
 
 
}()

var image: UIImage?
var name: String
var price: Double
var amount: String
var Store: String
}

由于您将所有项目和所有价格附加在一起,因此您得到的是您发布的结果。 为了获得您期望的结果,您需要在用户数据中将代码更改为类似这样的内容

static func allItems() -> String {
   var allItem: [String] = []
   for item in selectedItems {
       let text = "\(item.amount) (\(item.amount))"
       allItem.append(text)
   }
   return allItem.joined(separator: ", ")
}

这可以简单地解决为

totalOrder.text = selectedItems.map { "\([=10=].name) (\([=10=].amount) piece)" }.joined(separator: ", ")