Bri*_*ubt 12 swift swift-data ios17
完成 SwiftData 的测试版并尝试建立PersistentContainer. 我在我的上设置了一个modelContainer视图修改器ContentView,并使我的类符合@Model各种 WWDC 视频(已发布的视频)中所述的要求。
这是我要存储的基础对象,其中所有变量都符合Codable:
Board.swift
import SwiftData
@Model
class Board {
var size: Int = 3
var cellSize: CGFloat = 44
var numberOfTeamMembers: Int = 3
var numberOfEnemies: Int = 3
var spaces: [[Space]] = []
var selectedSpace: Space? = nil
var characters: [Space: Character] = [:]
var selectedCharacter: Character? = nil
var attackableSpaces: [Space] = []
var movableSpaces: [Space] = []
var teams: [Team] = []
var localTeam: Team? = nil
var currentTeam: Team? = nil
var gamePhase: GamePhase = GamePhase.pickTeam
var actions: [Action] = []
var unoccupiedSpaces: [Space] = []
var tilt: CGFloat = 1
var availableMoves: [UUID: [TurnPhase]] = [:]
var turn: Turn = Turn.mine
}
Run Code Online (Sandbox Code Playgroud)
ContentView.swift
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: [Board.self])
}
}
Run Code Online (Sandbox Code Playgroud)
我看到以下编译错误:
类型“Board”不符合协议“PersistentModel”
对实例方法“setValue”的调用没有完全匹配
尝试按照文档描述实施,但效果不太好。我哪里做错了?
您的实现是正确的,但 Swift 编译器中存在一个错误(现已修复,但尚未在 Xcode 15.0 beta 2 中修复),导致此操作无法正常工作。该错误与其他范围的宏扩展的可见性有关,因此解决方法是删除#Preview将宏(例如@Model)类型作为参数的视图上的 s。
注意:这一发现和解决方法归功于Holly Borla。
更新:这似乎已在 Xcode 15.0 beta 3 中修复。
| 归档时间: |
|
| 查看次数: |
5172 次 |
| 最近记录: |