我是斯威夫特的新手。
目标:全局访问数据
如何使用Swift使用以下类来实现全局临时存储来存储数据
在C#中,
1)我使用具有静态属性的类
Class TransactionData
{
public static DateTime dateTime { get; set; }
public static int Qty_Purchase { get; set; }
public static double ItemPrice { get; set; }
public static string Item_Code { get; set; }
}
2)我可以全局访问和设置或使用数据
TransactionData.Item_Code =" P200.XXX";
在斯威夫特,
a)如何在swift中实现这样的类?
要设计一个类,请使用CocoaTouch类或Swift类?
CocoaTouch类(它是UIViewControlelr的子类)和Swift类之间有什么不同
a)Swift中有一个静态类,如
public static Class TransactionData
{
public static DateTime dateTime { get; set; }
public static int Qty_Purchase { get; set; }
public static double ItemPrice { get; set; }
public static string Item_Code { get; set; }
}
由于
答案 0 :(得分:1)
如果您的目标是全局访问临时存储数据,只需为您的交易创建一个结构:
struct Transaction {
let date: Date
let quantity: Int
let price: Double
let code: String
}
然后只需创建一个singleton和一个属性来存储您的交易:
class Shared {
private init() { }
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"}]
如果您只想拥有一个事务,只需将一个可选变量添加到您的Shared结构而不是Transactions数组:
class Shared {
private init() { }
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"
}
答案 1 :(得分:-1)
您可以按照此步骤操作。如何在Swift 3中设置共享变量
创建模型文件“TimetableModel.swift”
import Foundation
class TimetableModel {
static let sharedInstance = TimetableModel()
let categories:[Day]
var user_id = Int()
// define any variable here
}
之后创建任何控制器
import UIKit
class TimetableVC: UIViewController {
override func viewDidLoad() { // now you can access shared variable
TimetableModel.sharedInstance.categories[section].name TimetableModel.sharedInstance.user_id
}
}