«Не может синтезировать» - почему этот класс не готов быть объявлено «@model» для использования со SwiftData?IOS

Программируем под IOS
Ответить
Anonymous
 «Не может синтезировать» - почему этот класс не готов быть объявлено «@model» для использования со SwiftData?

Сообщение Anonymous »

Я пытаюсь преобразовать приложение для достопримечательностей в SwiftData ... почему этот класс не соответствует кодируемому /

Код: Выделить всё

Decodable
? It won't compile but the messages are non-specific:

Type 'Landmark' does not conform to protocol 'Decodable'
Type 'Landmark' does not conform to protocol 'Encodable'

and
In expansion of Macro Model < /code> здесь: < /p>

не может автоматически синтезировать «декодируемый», потому что «любой swiftdata.backingdata» не соответствует «декоратируемому» < /p>
< /blockquote>

Код: Выделить всё

import Foundation
import SwiftUI
import CoreLocation
import SwiftData

@Model
final class Landmark: Hashable, Codable, Identifiable {
var id: Int
var name: String
var park: String
var state: String
var dezcription: String
var isFavorite: Bool
var isFeatured: Bool

var category: Category
private var coordinates: Coordinates
private var imageName: String

init(id:Int = Int.random(in: 2000...Int.max), name:String = "", park: String = "", state:String = "", dezcription: String = "", isFavorite: Bool = false, isFeatured:Bool = false, category: Category = Category.mountains, coordinates: Coordinates = Coordinates(latitude: 0, longitude: 0), imageName:String = "umbagog") {
self.id = id
self.name = name
self.park = park
self.state = state
self.dezcription = dezcription
self.isFavorite = isFavorite
self.isFeatured = isFeatured
self.category = category
self.coordinates = coordinates
self.imageName = imageName

}

enum Category: String, CaseIterable, Codable {
case lakes = "Lakes"
case rivers = "Rivers"
case mountains = "Mountains"
}

var image: Image {
Image(imageName)
}

var locationCoordinate: CLLocationCoordinate2D {
CLLocationCoordinate2D(
latitude: coordinates.latitude,
longitude: coordinates.longitude)
}

struct Coordinates: Hashable, Codable {
var latitude: Double
var longitude: Double
}
}
ps - я знаю, что дизайн этого (случайный идентификатор int ... место по умолчанию 0,0) плохая ... но это не дело вопроса. /> [*] Включение всех VAR в инициализатор < /li>
Чтение DOS и Donts объявления @model class < /li>
Создание изображения war @transient (хотя оно в любом случае рассчитывается, так что это не должно быть необходимым) < /li>
Перемещение координат структуры и категории. «Реальная» переменная UUID, которая на самом деле гарантирована уникальной


Подробнее здесь: https://stackoverflow.com/questions/775 ... odel-for-u
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»