簡體   English   中英

將對象傳遞給Objective-C中另一個類的最佳方法是什么?

[英]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 ,它是一個datasourcedelegate 它負責提供要在表視圖上顯示的用戶列表。 這些用戶列表取自數組“ 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.

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