如何在 swift 中编写正确的聚合 class
how to write a right aggregation class in swift
例如,我有一个关于 Vehicle 的 class,在这个 class 中,我有一个私人的 属性 带有日期的名称,这个 属性 应该得到一个或多个与时间相关的数据来自另一个名为 CalendarInfo 的 class。 CalendarInfo class 与 Vehicle class 具有聚合关系。由于我是 swift 的新手,我只需要帮助来理解我需要为此编写的代码的概念,从 class 到 link 属性到另一个具有聚合关系的class。我希望你能明白我的意思。
这是代码我不确定它们是否正确
class Vehicle {
private var id: UInt?
private var model = ""
private var dateTimes = CalendarInfo() //I have problem in this line
}
class CalenderInfo {
private var id: UInt?
private var Date = Calendar
}
方向是正确的,但是你有一些错别字和编译问题。
这是可编译的版本:
import Foundation
class Vehicle {
private var id: UInt?
private var model = ""
private var dateTimes: CalendarInfo = CalendarInfo()
}
class CalendarInfo {
private var id: UInt?
private var date: Calendar
init() {
id = 0
date = Calendar(identifier: .gregorian)
}
}
如果您需要 CalendarInfo
和 Vehicle
之间的聚合关系,并且如果我从图表和您所写的内容中正确理解它,您将需要 [= 之间的一对多关系=12=] 对象和 CalendarInfo
。
要实现您希望 Vehicle
定义中的 CalendarInfo
的集合类型,您可以通过执行以下操作来实现:
import Foundation
struct Vehicle {
var id: UInt?
var model: String
var dateTimes: [CalendarInfo] //I have problem in this line
}
struct CalendarInfo {
var id: UInt?
var date: Date
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let myCalendar = [CalendarInfo(id: 1, date: dateFormatter.date(from:"2019-02-10")!),
CalendarInfo(id: 2, date: dateFormatter.date(from:"2019-02-15")!),
CalendarInfo(id: 3, date: dateFormatter.date(from:"2019-02-20")!)]
let myCar = Vehicle(id: 1, model: "Honda", dateTimes: myCalendar)
myCar.dateTimes.count == 3 //true
例如,我有一个关于 Vehicle 的 class,在这个 class 中,我有一个私人的 属性 带有日期的名称,这个 属性 应该得到一个或多个与时间相关的数据来自另一个名为 CalendarInfo 的 class。 CalendarInfo class 与 Vehicle class 具有聚合关系。由于我是 swift 的新手,我只需要帮助来理解我需要为此编写的代码的概念,从 class 到 link 属性到另一个具有聚合关系的class。我希望你能明白我的意思。
这是代码我不确定它们是否正确
class Vehicle {
private var id: UInt?
private var model = ""
private var dateTimes = CalendarInfo() //I have problem in this line
}
class CalenderInfo {
private var id: UInt?
private var Date = Calendar
}
方向是正确的,但是你有一些错别字和编译问题。 这是可编译的版本:
import Foundation
class Vehicle {
private var id: UInt?
private var model = ""
private var dateTimes: CalendarInfo = CalendarInfo()
}
class CalendarInfo {
private var id: UInt?
private var date: Calendar
init() {
id = 0
date = Calendar(identifier: .gregorian)
}
}
如果您需要 CalendarInfo
和 Vehicle
之间的聚合关系,并且如果我从图表和您所写的内容中正确理解它,您将需要 [= 之间的一对多关系=12=] 对象和 CalendarInfo
。
要实现您希望 Vehicle
定义中的 CalendarInfo
的集合类型,您可以通过执行以下操作来实现:
import Foundation
struct Vehicle {
var id: UInt?
var model: String
var dateTimes: [CalendarInfo] //I have problem in this line
}
struct CalendarInfo {
var id: UInt?
var date: Date
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let myCalendar = [CalendarInfo(id: 1, date: dateFormatter.date(from:"2019-02-10")!),
CalendarInfo(id: 2, date: dateFormatter.date(from:"2019-02-15")!),
CalendarInfo(id: 3, date: dateFormatter.date(from:"2019-02-20")!)]
let myCar = Vehicle(id: 1, model: "Honda", dateTimes: myCalendar)
myCar.dateTimes.count == 3 //true