[英]What is the best way to pass an object to another class in Objective-C?
經過幾個月的不間斷學習,我真的很喜歡在我的第一個應用程序上工作。 有機會做了一個慈善的iOS App。 這是一個非常基本的應用程序,但我現在遇到了麻煩,希望獲得一些幫助。
我有以下視圖控制器和一個類:
PeopleViewController (datasource and delegate, also holds "people" NSMuteable array)
PersonViewController
Person
我有一個PersonViewController
並且此控制器連接到一個視圖,該視圖顯示帶有一些文本字段和圖像上載選項的表單。 它的最底部有一個提交按鈕,該按鈕與一個動作收集在一起,該動作從字段中收集所有數據。 那就是我打算做的。
我有一個PeopleViewController
,它是一個datasource
和delegate
。 它負責提供要在表視圖上顯示的用戶列表。 這些用戶列表取自數組“ people”。 當前,我正在人員視圖控制器的viewDidLoad
方法中填充數組。 最終, datasource
將是客戶數據庫,但目前此數組充當該數據庫。
我想做的是一些如何從存儲在Person類實例中的PersonViewController
獲取數據到PeopleViewController數組中。 點擊PersonViewController
表單的PersonViewController
按鈕時,將創建Person
的實例,然后將字段中的數據存儲在該新對象中。 問題是在viewDidLoad期間填充了人員數組。
問題:
如何將PersonViewController
新創建並填充的Person
對象放入PeopleViewController
類的people數組中?
實現這一目標的最佳方法是什么?
我是說對了嗎?在運行viewDidLoad之后,持有現有“人”的人數組仍然存在於堆中,我可以通過一些方法將新創建的對象添加到該數組中嗎?
有點困惑。
我想到了一些方法,但有些看起來很乏味。 我想看看經驗豐富的開發人員如何做到這一點,並理解原因。
問候
首先,您的數組必須是NSMutableArray,否則您將無法從數組中添加或刪除對象。
一旦確定陣列是可變的,就可以調用
[personArray addObject:newPerson];
即使將數組填充到viewDidLoad
,也可以執行此操作。 請注意,將項目添加到陣列只是一個步驟,您仍然需要更新用戶界面。
編輯:
要將新創建的Person對象從一個控制器傳遞到另一個控制器,您有幾種選擇。 如果PersonViewController具有指向PeopleViewcontroller的指針,則只需將數組設為公共屬性即可。
[myPeopleViewController.personArray addObject...]
真的很難回答這個問題,因為我需要查看如何實例化兩個ViewController,以及它們之間的關系是什么。
也許Singleton對您來說很有趣。 特別是如果您將增強您的應用程序以與其他ViewController共享數據。
這是一個學習DesignPattern和Singleton的好網站,網址為http://www.raywenderlich.com/46988/ios-design-patterns
希望這對您有所幫助,並能在iOS上玩得開心。
格爾茨
我最初所做的是在表單提交按鈕上附加了一個操作。 然后,我聲明了一個實例變量,並在操作中對其進行了初始化。 當時的印象是我可以在我的prepareforsegue方法中獲取實例並訪問它在操作中設置的屬性,但是當嘗試從對象實例讀取屬性時,我一直得到null。
我刪除了該動作並刪除了它的連接,然后初始化了一個新對象以將文本字段值存儲在prepareforsegue方法內,這對我來說很好用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.