我试图在测试项目中使用Bond来实现MVVM模式。
这个想法很简单:
到目前为止,这是我的代码:
// 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
}
}
当我尝试return self.comment.id
时,Xcode会显示以下错误:
无法转换类型&#39; Int&#39;的返回表达式返回类型 &#39;属性
这是有道理的 - comment.id
是Int
而self.id
是Observable<Int>
。如何使其工作,因为我不想将Comment
类型中的属性定义为Observable
。
答案 0 :(得分:0)
修正了它 - 只需更改语法:
struct CommentViewModel {
private let comment: Observable<Commentable>
init(comment: Commentable) {
self.comment = Observable(comment)
}
public var id: Observable<Int> {
return Observable(comment.value.id)
}
}