在两个文件中的两个类之间传递数据

时间:2016-01-02 02:37:41

标签: ios swift segue xib

我有两个快速文件。一个文件有一个带有一些数据的变量。我需要在另一个类的变量中使用数据。

A类

class HVListConnectionsRequest: HVRequest {

    var connections = [HVConnection]()
    //Some code
}

B类

class HVListConnectionsController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
}

请告诉我如何在B类connections变量中打印数据。

我没有使用故事板,我正在使用XIB文件和MVC 设计模式,所以请告诉我如何不使用segues。

2 个答案:

答案 0 :(得分:1)

  

我有两个快速文件。一个文件有一个带有一些数据的变量。我需要在另一个类的变量中使用数据。

您真正想要做的是在另一个对象中使用数据。 connectionsHVListConnectionsRequest的属性,因此HVListConnectionsRequest的每个实例都有connections的值。

在对象之间移动数据是面向对象编程中的基本任务,并且这样做需要一个对象具有对另一个对象的引用。在这种情况下,您需要HVListConnectionsController对象以某种方式获取对您关注的HVListConnectionsRequest实例的引用。有很多方法可以实现这一点,例如:

  • HVListConnectionsController可以创建新的HVListConnectionsRequest

  • 其他一些对象可以为HVListConnectionsRequest提供HVListConnectionsController个对象。

  • HVListConnectionsController可以从某个知名位置或对象获取HVListConnectionsRequest

一旦您的HVListConnectionsController引用了HVListConnectionsRequest,那么获取connections属性显然很简单。例如,如果someRequest指向连接请求:

let myConnections = someConnectionsRequest.connections

因此,您需要考虑HVListConnectionsRequestHVListConnectionsController之间的关系......如何创建HVListConnectionsRequest个对象?你说你正在使用MVC; HVListConnectionsRequest是应用数据模型的一部分,如果是,HVListConnectionsController是否可以从模型中获取连接请求?或者它们是否可能由创建HVListConnectionsViewController的相同视图控制器创建,如果是,那么视图控制器在创建“HVListConnectionsViewController”时是否可以传递请求?

简而言之,我无法告诉您应用中的一个对象如何与另一个对话,而不了解更多有关如何在您的应用中创建这些对象的信息。好消息是,我不需要告诉你,或者......一旦你看到物体之间的关系,你就会自己解决这个问题。

但是,我可以告诉你的一点是,你应该做好避免“简单”的解决方案,例如创建单例或将数据存储在用户默认系统中。您正在处理一个非常典型的面向对象设计问题,并且可以解决用户默认设置或让应用程序中的所有内容都可以访问其他所有内容,只需避免设计问题;结果将是一个设计糟糕的应用程序,变得越来越难以工作。

答案 1 :(得分:-1)

您可以使用NSUserDefaults存储连接数据。在另一个B类中,您可以从NSUserDefaults获取连接数据。

如果您想了解如何在NSUserDefaults中保存并获取价值,请查看answer