Skip to content

Instantly share code, notes, and snippets.

@novinfard
Created January 23, 2019 10:20
Show Gist options
  • Save novinfard/ecf03d56c3e98f4708415b818a11277c to your computer and use it in GitHub Desktop.
Save novinfard/ecf03d56c3e98f4708415b818a11277c to your computer and use it in GitHub Desktop.
[View Model with data object interacting with]
struct DataObject {
var title: String?
var publishDate: Date
var imageUrl: String?
// other properties
var expirationDate : Date
var documentHTML: String?
}
protocol MyViewModel {
var title: String? { get }
var date: String? { get }
var hasPhotos: Bool { get }
}
class MyViewModelDefault {
let dataObject: DataObject
init(with dataObject: DataObject) {
self.dataObject = dataObject
}
}
extension MyViewModelDefault: MyViewModel {
var title: String? {
return self.dataObject.title
}
var date: String? {
let dateformatter = DateFormatter()
dateformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateformatter.string(from: self.dataObject.publishDate)
}
var hasPhotos: Bool {
return self.dataObject.imageUrl != nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment