Невозможно преобразовать возвращаемое выражение типа Int в тип возвращаемого значения. Свойство <Int> - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь реализовать шаблон MVVM, используя Bond в тестовом проекте.

Идея проста:

  1. Определите абстракцию, которую затем использует viewModel.
  2. Сделайте из этой абстракции конкретный тип.
  3. Внедрить этот конкретный тип в 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.

1 Ответ

0 голосов
/ 08 мая 2018

Исправлено - просто пришлось изменить синтаксис:

struct CommentViewModel {

    private let comment: Observable<Commentable>

    init(comment: Commentable) {
        self.comment = Observable(comment)
    }

    public var id: Observable<Int> {
        return Observable(comment.value.id)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...