簡體   English   中英

通過 App Delegate 在視圖之間共享數據

[英]Sharing Data between Views through App Delegate

我有一個關於在視圖之間共享數據的問題,希望它不是太基本。 我在 appDelegate 中有一個 NSMutableArray,比如(Object1,Object2,Object3)。 當一個新的 Object 創建(並添加到數組中)時,我需要在下一個視圖中訪問該 Object。 以前我只是將 Object 傳遞到下一個視圖,但這變得一團糟,似乎是錯誤的。

所以現在我將所有對象放在一個地方,但是我如何在下一個視圖中訪問 Object(剛剛創建),因為我不知道它被添加到哪個索引中? 每次創建 object 時是否需要檢查數組的計數,然后從中確定數組索引並將該索引值傳遞給下一個視圖? 或者有沒有辦法通過某種唯一名稱從 NSMutable 數組中檢索對象?

另一種解決方案是遍歷所有對象,直到找到我想要的對象,但我想知道這樣做的正確方法是什么。 感謝您的時間。

編輯:感謝您的回復,我會澄清我正在嘗試做的事情。 我有一個 NavigationController,您 go 進入的每個視圖都需要訪問 Object。 你可以把它想象成一本書。 第一次查看您 select 您要閱讀的書,然后之后的每個視圖都是您選擇的書的一頁。 在 App Delegate 中是所有書籍的數組。 你會通過每個“頁面”查看這本書嗎?

請記住,這是一個粗略的示例,因為當您閱讀 select 這本書時,您已經知道它所在的索引。 假設您創建了一本書,那么您還不知道它在數組中的哪個位置。

如果您可以為每個對象創建一個有意義的唯一名稱,只需使用NSMutableDictionary並讓控制器通過指定鍵來獲取數據。 像這樣:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSString *obj = [appDelegate.dict objectForKey:@"unique-name-here"];

希望有幫助。

我不確定您是在談論在不同控件之間共享對象,還是在談論不同的視圖控制器-例如主從視圖,盡管我懷疑這就是您的意思。

在這種情況下,如果您有一個專門用於編輯單個 object 的詳細視圖,那么在我看來,給該視圖 controller 和 object 進行編輯並不是錯誤的。 如果您要維護一個數組,您仍然可以將新的 object 添加到數組中,並將 object 分配給新視圖 controller,然后再將其放在屏幕上。

如果您可以更具體地了解您的應用程序是如何工作的,我可能會給您一些更好的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM