У меня есть несколько классов, которые я хочу использовать с представлением выбора бюджета. У всех них определен этот бюджетный протокол.
import SwiftUI
struct BudgetPickerView: View {
@EnvironmentObject var userData: UserData
@State var budgetable: Budgetable
...
}
import Foundation
protocol Budgetable
{
var budgetId: String { get set }
}
Например, этот класс распределения
import Foundation
import Combine
class Allocation: ObservableObject, Identifiable, Budgetable {
let objectWillChange = ObservableObjectPublisher()
let id: String?
var amount: String { willSet { self.objectWillChange.send() } }
var budgetId: String { willSet { self.objectWillChange.send() } }
init(id: String? = nil, amount: String, budgetId: String) {
self.id = id
self.amount = amount.removePrefix("-")
self.budgetId = budgetId
}
}
Однако, когда я пытаюсь передать распределение в представление выбора бюджета, я получаю ошибка
NavigationLink(destination: BudgetPickerView(budgetable: allocation))...
Невозможно преобразовать возвращаемое выражение типа 'NavigationLink>, BudgetPickerView>' в возвращаемый тип 'some View'
Тип выражения 'BudgetPickerView' является неоднозначным без дополнительного контекста