小编Ben*_*ess的帖子

获取周围坐标的最短代码是什么?

我不喜欢我的以下实现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)

swift swift3

5
推荐指数
1
解决办法
108
查看次数

根据观察变量的变化更新@Published 变量

我有一个可以观察到的 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 个小时的反复试验,我希望这里的社区可以帮助我。

swift combine

4
推荐指数
1
解决办法
3731
查看次数

标签 统计

swift ×2

combine ×1

swift3 ×1