2017-01-10 17 views
0

我是Swift中的新手。如何在項目中的任何ViewController中全局訪問數據

目的:訪問數據全球

如何使用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)I能夠訪問,並設置或使用數據全局

TransactionData.Item_Code =「P200.XXX」;

在斯威夫特,

一)如何迅速實現這樣的課嗎?

要設計一個類,使用CocoaTouch類或Swift類?

什麼是CocoaTouch類(凡子類UIViewControlelr)和雨燕類之間的不同

一)有沒有在斯威夫特一個靜態類像

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; } 

    } 

感謝

回答

1

如果你的目標是爲全局訪問數據進行臨時存儲,只需爲您的事務創建一個結構:

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" 

} 
+0

如何讓它來代替數據和不重複?即ITEM_CODE將數據存儲在它已經改變了一點,即如果項目代碼現在是P200,下一個是P300,當我訪問並更改它時,當我再次訪問item_Code時,我應該得到P300。 – MilkBottle

+0

只需將陣列項目替換爲新項目 –

+0

這是正確的:要設置:Shared.instance.transactions.code =「P300」要訪問:strcode = Sh are.instance.transactions.code對不起,我是Swift語法和概念的新手。 – MilkBottle

-1

您可以按照該步驟。如何在Swift中設置共享變量3

  1. 創建一個模型文件「TimetableModel。雨燕」

    import Foundation 
    class TimetableModel { 
        static let sharedInstance = TimetableModel() 
        let categories:[Day]   
        var user_id = Int() 
        // define any variable here 
    } 
    
  2. 之後,創建任何控制器

    import UIKit 
    class TimetableVC: UIViewController { 
        override func viewDidLoad() { // now you can access shared variable 
         TimetableModel.sharedInstance.categories[section].name TimetableModel.sharedInstance.user_id 
        } 
    } 
    
相關問題