Вы не хотите такого результата.
apple
подразумевается с 30.00
.pizza
подразумевается с 2.00
.
Если вы используете эти два массива, если вы измените порядок, удалите один, вам нужно будет выполнить ту же операцию со вторым.
Вместо этого используйте массив словарей:
let startingArray = ["apple", "30.00", "pizza", "2.00"]
var final: [[String: String]] = []
for i in stride(from: 0, to: startingArray.count, by: 2) {
let name = startingArray[i]
let price = startingArray[i+1]
final.append(["name": name, "price": price])
}
print("final: \(final)")
Вывод:
$> [["name": "apple", "price": "30.00"], ["name": "pizza", "price": "2.00"]]
Затем вы можете сделать в конечном массиве:
let first: [String: String] = final[0]
let firstName = first[name]
let firstPrice = first[price]
Вы также можетеиспользуйте кортеж, но лучшим способом было бы использовать пользовательскую структуру / класс для представления этого.
struct Grocery {
let name: String
let price: Double
init(name: String, priceStr: String) {
self.name = name
self.price = Double(priceStr) ?? 0
}
}
let startingArray = ["apple", "30.00", "pizza", "2.00"]
var groceries = [Grocery]()
for i in stride(from: 0, to: startingArray.count, by: 2) {
let name = startingArray[i]
let price = startingArray[i+1]
let grocery = Grocery(name: name, priceStr: price)
groceries.append(grocery)
}
print("groceries: \(groceries)")
Вывод:
$> groceries: [Grocery(name: "apple", price: 30.0), Grocery(name: "pizza", price: 2.0)]
Затем вы можете сделать в конечном массиве:
let first: Grocery = groceries[0]
let firstName = first.name
let firstPrice = first.price
Примечание: я использовал Double для цены, но если вы хотите оставить его как String
, вам решать.