我不喜欢我的以下实现surroundingPositions来获得围绕特定位置的x和y坐标,因为在我看来它对于简单的意图来说太长了并且它具有厄运结构的金字塔.
struct Position: CustomStringConvertible {
let x, y: Int
var surroundingPositions: [Position] {
var surroundingPositions: [Position] = []
for x in (self.x - 1)...(self.x + 1) {
for y in (self.y - 1)...(self.y + 1) {
if !(x == self.x && y == self.y) {
surroundingPositions.append(Position(x: x, y: y))
}
}
}
return surroundingPositions
}
var description: String {
return "(\(x),\(y))"
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let testPosition = Position(x: 1, y: 1)
print(testPosition.surroundingPositions)
// Output: [(0,0), (0,1), (0,2), (1,0), …Run Code Online (Sandbox Code Playgroud) 我有一个可以观察到的 AppState:
class AppState: ObservableObject {
private init() {}
static let shared = AppState()
@Published fileprivate(set) var isLoggedIn = false
}
Run Code Online (Sandbox Code Playgroud)
视图模型应该根据状态 ( isLoggedIn)决定显示哪个视图:
class AppState: ObservableObject {
private init() {}
static let shared = AppState()
@Published fileprivate(set) var isLoggedIn = false
}
Run Code Online (Sandbox Code Playgroud)
最后 aHostView观察该containedView属性并根据它显示正确的视图。
我的问题是isLoggedIn上面的代码没有被观察到,我似乎无法找到一种方法来做到这一点。我很确定有一个简单的方法,但是经过 4 个小时的反复试验,我希望这里的社区可以帮助我。