我有两个快速文件。一个文件有一个带有一些数据的变量。我需要在另一个类的变量中使用数据。
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。
答案 0 :(得分:1)
我有两个快速文件。一个文件有一个带有一些数据的变量。我需要在另一个类的变量中使用数据。
您真正想要做的是在另一个对象中使用数据。 connections
是HVListConnectionsRequest
的属性,因此HVListConnectionsRequest
的每个实例都有connections
的值。
在对象之间移动数据是面向对象编程中的基本任务,并且这样做需要一个对象具有对另一个对象的引用。在这种情况下,您需要HVListConnectionsController
对象以某种方式获取对您关注的HVListConnectionsRequest
实例的引用。有很多方法可以实现这一点,例如:
HVListConnectionsController
可以创建新的HVListConnectionsRequest
。
其他一些对象可以为HVListConnectionsRequest
提供HVListConnectionsController
个对象。
HVListConnectionsController
可以从某个知名位置或对象获取HVListConnectionsRequest
。
一旦您的HVListConnectionsController
引用了HVListConnectionsRequest
,那么获取connections
属性显然很简单。例如,如果someRequest
指向连接请求:
let myConnections = someConnectionsRequest.connections
因此,您需要考虑HVListConnectionsRequest
和HVListConnectionsController
之间的关系......如何创建HVListConnectionsRequest
个对象?你说你正在使用MVC; HVListConnectionsRequest
是应用数据模型的一部分,如果是,HVListConnectionsController
是否可以从模型中获取连接请求?或者它们是否可能由创建HVListConnectionsViewController
的相同视图控制器创建,如果是,那么视图控制器在创建“HVListConnectionsViewController”时是否可以传递请求?
简而言之,我无法告诉您应用中的一个对象如何与另一个对话,而不了解更多有关如何在您的应用中创建这些对象的信息。好消息是,我不需要告诉你,或者......一旦你看到物体之间的关系,你就会自己解决这个问题。
但是,我可以告诉你的一点是,你应该做好避免“简单”的解决方案,例如创建单例或将数据存储在用户默认系统中。您正在处理一个非常典型的面向对象设计问题,并且可以解决用户默认设置或让应用程序中的所有内容都可以访问其他所有内容,只需避免设计问题;结果将是一个设计糟糕的应用程序,变得越来越难以工作。答案 1 :(得分:-1)
您可以使用NSUserDefaults存储连接数据。在另一个B类中,您可以从NSUserDefaults获取连接数据。
如果您想了解如何在NSUserDefaults中保存并获取价值,请查看answer。