如果你的目標是爲全局訪問數據進行臨時存儲,只需爲您的事務創建一個結構:
struct Transaction {
let date: Date
let quantity: Int
let price: Double
let code: String
}
然後,只需創建一個共享結構,靜態實例屬性添加到它,並創建一個屬性來存儲您的交易:
struct Shared {
static var instance = Shared()
var transactions: [Transaction] = []
}
用法:
Shared.instance.transactions.append(Transaction(date: Date(), quantity: 2, price: 0.99, code: "item01"))
Shared.instance.transactions.append(Transaction(date: Date(), quantity: 3, price: 2.99, code: "item02"))
Shared.instance.transactions // [{date "Jan 10, 2017, 2:00 AM", quantity 2, price 0.99, code "item01"},
// {date "Jan 10, 2017, 2:00 AM", quantity 3, price 2.99, code "item02"}]
通過您的交易和編輯循環它:
for (index, transaction) in Shared.instance.transactions.enumerated() {
print(transaction)
if transaction.code == "item02" {
Shared.instance.transactions[index] = Transaction(date: transaction.date, quantity: transaction.quantity, price: transaction.price, code: "NEW CODE")
}
}
Shared.instance.transactions // [{date "Jan 10, 2017, 2:42 AM", quantity 2, price 0.99, code "item01"}, {date "Jan 10, 2017, 2:42 AM", quantity 3, price 2.99, code "NEW CODE"}]
如果你想擁有隻是一個單一的交易只需添加一個可選的變量設置爲共享結構,而不是交易陣列:
struct Shared {
static var instance = Shared()
var transaction: Transaction?
}
與用法:
Shared.instance.transaction = Transaction(date: Date(), quantity: 5, price: 5.0, code: "P200")
print(Shared.instance.transaction?.code ?? "") // "P200\n"
if let transaction = Shared.instance.transaction {
Shared.instance.transaction = Transaction(date: transaction.date, quantity: transaction.quantity, price: transaction.price, code: "P300")
print(Shared.instance.transaction!) // "Transaction(date: 2017-01-10 05:13:58 +0000, quantity: 5, price: 5.0, code: "P300")\n"
}
如何讓它來代替數據和不重複?即ITEM_CODE將數據存儲在它已經改變了一點,即如果項目代碼現在是P200,下一個是P300,當我訪問並更改它時,當我再次訪問item_Code時,我應該得到P300。 – MilkBottle
只需將陣列項目替換爲新項目 –
這是正確的:要設置:Shared.instance.transactions.code =「P300」要訪問:strcode = Sh are.instance.transactions.code對不起,我是Swift語法和概念的新手。 – MilkBottle