【发布时间】:2019-10-16 05:34:16
【问题描述】:
我有一个领域数据库模型对象,我将它从一个控制器传输到另一个控制器。在另一个控制器上,我需要从这个对象中获取数据,该对象存储了 List 类型的对象。我在 'cellForRowAt' 方法中需要它。
这是我的模型:
class Route: Object {
@objc dynamic var routeImage: Data?
@objc dynamic var routeName: String?
@objc dynamic var numberOfPersons = 0.0
@objc dynamic var dateOfDeparture: String?
@objc dynamic var dateOfArrival: String?
let placeToVisit = List<Place>()
let person = List<Person>()
}
class Place: Object {
@objc dynamic var placeName = ""
convenience init(placeName: String) {
self.init()
self.placeName = placeName
}
}
在我创建的第二个 VC 上:
var currentRoute: Route?
在 viewDidLoad 我设置了:
currentRoute = UserSelectedRoute.shared.selectedRoute!
我可以从其他属性中获取数据,但不能从列表类型中获取数据。我试图实现“减少”方法,但它不起作用。它也返回列表类型。我想我需要将列表转换为结果类型,但我不知道如何从当前对象返回值? cellForRowAt image
【问题讨论】:
-
这里没有足够的代码来理解用例。例如,这个
UserSelectedRoute.shared.selectedRoute!是什么,是单例吗?它是大写的,所以我们应该假设它不是一个类变量吗?如果它是单例,则无需“传递”该对象,因为它在整个应用程序中都可用。您能澄清一下您的要求和尝试做什么吗? -
是的,它是单例。另一个控制器中使用了一个对象,我需要为方法“cellForRowAt”提取它。在图片中,您可以看到我如何从 'dateOfDeparture' 和 'dateOfArrival' 获取数据 - 它是数据库模型的简单属性。但我无法从“placeToVisit”获取数据到 tableView.section 0。有一些对象,我需要显示。
-
单例的一个用途是集中存储某些数据或功能。如果您在一个 viewController 中从该单例中获取数据,那么相同的数据将在来自该单例的任何 viewController 中可用,这意味着它不需要传递,因为它在整个应用程序中都可用。您不需要将列表“转换”为结果 - 列表作为数据源工作得很好。请不要包含代码的链接或屏幕截图 - 如果该链接中断,则问题无效。在您遇到困难的问题中包含代码(作为文本)。
-
我会考虑未来。感谢您的建议:) 然后我有一个问题如何将列表类型中的对象放入表格部分(我需要在 secondVC 中的 cellForRow 方法中做什么以及如何做?)。 List 类型的集合存储具有“namePlace”属性的“Place”类型的对象,我需要获取这些对象并将它们放在行中。这是一个主要问题,请帮助我)
-
听起来您在问如何访问 Realm 对象的 List 属性。查看文档Many To Many,了解在对象上实现 List 的示例。该列表的工作方式与数组非常相似,可以迭代,甚至可以通过索引直接访问对象。在您的情况下,我不知道具体问题是什么,但如果您在问题中包含您遇到问题的代码,我们可能会制定具体的答案。哦 - 例如,这适用于“let place = someRouteObject.placeToVisit[4]”