加入两个字符串 - 斯威夫特

Posted

技术标签:

【中文标题】加入两个字符串 - 斯威夫特【英文标题】:join two string - Swift 【发布时间】:2021-04-20 01:13:54 【问题描述】:

我有一个适用于我的商店的应用程序,在购物车视图控制器中我有一个 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

【问题讨论】:

贴出完整代码,尤其是allItemsToString 【参考方案1】:

这可以简单地解决为

totalOrder.text = selectedItems.map  "\($0.name) (\($0.amount) piece)" .joined(separator: ", ")

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于加入两个字符串 - 斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章

基于正则表达式从字符串中提取字符串数组? - 斯威夫特

斯威夫特:'(字符串)-> AnyObject?没有名为“下标”的成员

斯威夫特 3;用非可选字符串附加可选字符串

如何将字符串转换为 utf-8? (斯威夫特,阿拉莫菲尔)

如何将数组对象转换为 JSON 字符串。 IOS 8。斯威夫特 1.2

如何更换字符串的部分和更多。斯威夫特4