Я пытаюсь реализовать шаблон MVVM, используя Bond в тестовом проекте.
Идея проста:
- Определите абстракцию, которую затем использует viewModel.
- Сделайте из этой абстракции конкретный тип.
- Внедрить этот конкретный тип в viewModel.
Это мой код:
// 1.
protocol Commentable {
var id: Int { get }
var name: String { get }
var body: String { get }
}
// 2.
struct Comment: Commentable {
var id: Int
var name: String
var body: String
}
// 3.
struct CommentViewModel {
private let comment: Commentable
init(comment: Commentable) {
self.comment = comment
}
public var id: Observable<Int> {
return self.comment.id
}
}
Xcode показывает следующую ошибку при попытке return self.comment.id
:
Невозможно преобразовать возвращаемое выражение типа Int в возвращаемый тип.
«Свойство
Это имеет смысл - comment.id
- это Int
, а self.id
- это Observable<Int>
. Как заставить это работать, хотя я не хочу определять свойства в моем типе Comment
как Observable
.