2017-01-10 7 views
0

私はSwiftの初心者です。プロジェクト内の任意のViewControllerでクラスのデータにグローバルにアクセスする方法

目的:

1、C#ではデータ

を格納するクラスの下に使用してグローバル一時的なストレージを実装するためにスウィフトの使用方法グローバル

をデータにアクセスします)私は、静的プロパティを持つクラスを使用します

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)は迅速にそのようなクラスを実装する方法?

クラスを設計するには、CocoaTouchクラスまたはSwiftクラスを使用しますか? (それはUIViewControlelrにサブクラス)CocoaTouchクラスとスウィフトクラスの間で異なっている何

A)スウィフトの静的クラスなどがあり

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"}] 

があなたの取引と編集をループそれ:


あなただけの単一のトランザクションを持つようにしたい場合は、ちょうどあなたの共有の代わりに取引配列の構造体へのオプションの変数を追加します。

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は、それが変更された時点でデータを保存しますつまり、item-CodeがP200で次のP300がアクセスして変更した場合、item_Codeに再びアクセスすると、P300が得られるはずです – MilkBottle

+0

配列項目を新しいものに置き換えます –

+0

は正しいです:設定する:Shared.instance.transactions.code = "P300"アクセスする:strcode = Sh are.instance.transactions.code申し訳ありませんが、私はSwiftの構文とコンセプトに慣れていません。 – MilkBottle

-1

あなたが従うことができます:

struct Shared { 
    static var instance = Shared() 
    var transaction: Transaction? 
} 

と使用方法ステップ。 Swiftで共有変数を設定する方法3

  1. モデルファイル "TimetableModel"を作成します。その後SWIFT」

    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 
        } 
    } 
    
関連する問題