2015-12-29 21 views
0

在我工作的應用程序中,我需要可用於所有UIView的數組變量。目前,當數組在視圖中更改時,它將存儲在數據庫中,並且當我需要上一視圖中數組的更新版本時,我使用viewWillAppear方法並從數據庫中檢索更新的數組。在用segue轉到另一個視圖時,我使用prepareForSegue的傳遞數據,但如果使用後退按鈕,或者只是通過標籤欄更改屏幕,我使用viewWillAppear和查詢。在所有視圖中使用數組變量

有什麼辦法,當數組在視圖中創建時,其中的數據將在所有視圖中可訪問?

+0

當然你也可以使用一個單獨但是這通常令人難以接受的。(見鏈接)我會很感興趣,看看都給出什麼其他選擇,你不希望保留保存/提取記錄。 (鏈接:http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons) –

+0

請不要使用單身人士或任何其他全球數據。將數據從視圖控制器傳遞到視圖控制器。從那裏到視圖。創建一個知道如何處理數據的通用UIView基類。這裏我張貼代碼來展示如何通過子類化輕鬆完成將vc傳遞給vc的過程。子類視圖不包括在內。 http://stackoverflow.com/questions/32979924/passing-data-from-the-firstviewcontroller-to-the-lastviewcontroller/32980270#32980270 – vikingosegundo

回答

0

辛格爾頓

辛格爾頓基本上是一個全局變量,你可以在任何視圖中使用它們,但一些開發商遇到了一些錯誤和困難,用它在你自己的風險,我建議這個方法時,你肯定那你會很多地使用這些數據(STILL RISKY),,但是這個方法就像數據處理的女神 :)。

創建NSObject並調用它DataManager.swift(我把它叫做數據管理導致它處理數據。)如下:

進口的UIKit

class DataManager: NSObject { 

    //Store Data Globally 
    static var someData: NSArray! //This Boolean, you can choose whatever you want. 
} 

static是什麼讓您的數據活。

現在您可以像處理任何類型的數據那樣從任何地方存儲和接收someData

//Store 
DataManager.someData = [] 

//Receive 
print(DataManager.someData) 
+0

你好Farhad,你會提供更多的,單一或全局變量定義就在導入部分之下。他們的優點和缺點是什麼? – saner

+0

那麼,你想在其他視圖中使用數組並且可靠,那麼你需要單例。一個全局變量是安全的(不是所有的時間)都是因爲功能超出了功能,但是更加有限。但我建議單身。搜索'struct'也可能有幫助。 – Xrait

2

正如我在我的評論中所說的,單身人士通常因爲無數的原因而被壓抑。然而,對這個話題很多爭論:

What is so bad about singletons?

說了這麼多,我知道做一個全局變量可用於會話的最佳方式是通過創建一個單例。

struct myArray { 
    static var data: [Int] = [] 
} 

您可以設置此單高達獲取使用CoreData的記錄,保存當前工作版本,以便快速訪問一個靜態變量。

備註:我真的很好奇看到其他一些方法。