加入两个字符串 - 斯威夫特
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?没有名为“下标”的成员