所讨论的应用程序建立如下:模型类似于关系数据库的类还是结构?
- 用户选择的作业
- 的作业可以具有许多组件
- 每个组件可以有很多了LineItem。
我不清楚这应该如何构造 - 这应该是类或结构?看到一次只处理一项工作,我相信工作应该是一个阶级。但是,当某个对象类型有多个时,我不太清楚如何形成它们,例如组件和lineitem对象。
该应用程序由ViewControllers和TableViewControllers组成。所有数据都是从JSON服务器获取的,并根据需要填充到相应的视图中。下面是对象类型,因为他们目前设置:
作业对象:
// Job Object
//
public struct Job {
static var globalId : String?
static var name : String?
static var status : String?
static var client = Client()
static var components = Array<Component>()
// etc..
}
一个组件,如下所示:
// JobComponent Object
//
public struct Component {
var name:String? = ""
var fmRecordId : String?
var startTS:NSDate?
var endTS:NSDate?
var notes:String? = ""
var items = Array<Lineitem>()
// etc...
}
,最后一个订单项:
// Lineitem Object
//
public struct Lineitem {
var fmRecordId = String()
var itemName = String()
var itemNumber = String()
// etc...
}
所有这些对象都在名为“PL”的public class
内构建。
当用户选择lineitem并编辑它的值时,这些值在编辑它们的VC之外是不可用的,因为VC没有引用传递的lineitem,而只是复制它。组件也是如此。
我发现一种解决方法是使用作业结构PL.Job.self
始终修改的组件和了LineItem像这样其中i
=阵列中的期望的索引:
PL.Job.components[i]
访问部件PL.Job.components[i].items[i]
访问该组件中的特定项目。
但是,这并没有很好地扩展。
期望的行为是能够将引用传递给对象周围的特定实例,而不是绕过PL.Job
对象中这些对象的索引路径。
我很清楚目前这种结构有什么问题,但是有人能指点我吗?
非常有助于澄清这一点,谢谢。有没有办法回到“爬上”阶梯?例如,给定一个项目,是否有可能获得与其相关的工作信息? –
是的,但您需要创建一个包含作业参考的属性。因此,给'LineItem'一个名为'job'的属性,并在初始化它时传递给'Job'的引用:'init(job:Job){self.job = job}' – letvargo