【发布时间】:2018-02-14 03:14:43
【问题描述】:
我对 MVC 还很陌生,我有一个关于模型和视图的问题。我有一些内容视图,允许用户通过点击来收藏该内容。这发生在视图中,我需要使用新信息更新数据模型。在我看来,简单的方法是在每个单元格上都有一个 Note 属性,然后当在控制器中点击该单元格时,我可以使用与该关联的注释在 DataSource 上调用 addFavoriteNote 或 removeFavoriteNote细胞。但是,Note 是模型中的一个类,因此我的理解是在UITableViewCell 中包含Note 属性是不正确的。这在 MVC 中是错误的吗?如果是,那么面向 MVC 的方法是什么?
class Note: Comparable {
var content: String!
var creationDate: Date!
var author: Person!
init(content: String, creationDate: Date, author: Person) {
self.content = content
self.author = author
self.creationDate = creationDate
}
convenience init(author: Person) {
self.init(content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed in efficitur nulla. Suspendisse facilisis tincidunt dictum. Praesent bibendum efficitur lectus vitae imperdiet. Sed odio est, fermentum et turpis vel, pellentesque volutpat magna. Aliquam iaculis libero at dignissim rutrum. Phasellus luctus elementum eros, gravida consequat tellus dignissim ultricies. Ut consectetur ut ante imperdiet molestie. Aliquam blandit, nulla eu egestas accumsan, diam justo varius augue, vel pellentesque felis tortor in orci. In nunc erat, luctus a mauris in, molestie blandit lorem. Vestibulum cursus, ligula sed lobortis vulputate, mauris eros finibus dui, id pretium lacus tortor eu erat. Curabitur pretium, ante in pellentesque vehicula, metus quam interdum leo, faucibus facilisis tellus massa a turpis. Pellentesque sit amet est sem. Vestibulum posuere luctus libero pretium faucibus", creationDate: Date(), author: author)
}
static func <(lhs: Note, rhs: Note) -> Bool {
return lhs.creationDate < rhs.creationDate
}
static func ==(lhs: Note, rhs: Note) -> Bool {
return lhs.creationDate == rhs.creationDate
}
}
class DataSource: NSObject {
private var favorites: [Note] = []
func addFavoriteNote(note: Note) {
favorites.append(note)
}
func removeFavoriteNote(note: Note) {
if let index = favorites.index(of: note) {
favorites.remove(at: index)
}
}
//...more stuff
}
【问题讨论】:
标签: ios swift model-view-controller