小编Ham*_*dar的帖子

在 Firestore 中如何更新文档中可能存在或不存在的字段?

如果我们尝试在 Firestore 中更新文档中的字段,则会引发错误,即该字段不存在。我应该先手动检查文档是否存在,如果不存在,则创建它然后更新该字段,或者有更好更优雅的做法吗?

firebase google-cloud-firestore

10
推荐指数
1
解决办法
3075
查看次数

我可以存储 Apple 的公钥以验证令牌签名吗?

为了与 Apple 实现 OAuth,我们调用GET https://appleid.apple.com/auth/keys.

(根据https://docs.developer.pv.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature 中的文档)

结果如下:

{
    "kty": "RSA",
    "kid": "1234567890",
    "use": "...",
    "alg": "RS256",
    "n": "...",
    "e": "..."
}
Run Code Online (Sandbox Code Playgroud)

我可以相信这些信息不会在没有通知的情况下更改吗?或者每次我们需要使用 Apple 的公钥时我都应该提出这个请求吗?

oauth public-key-encryption ios apple-sign-in sign-in-with-apple

10
推荐指数
1
解决办法
1503
查看次数

@Environment 与 @EnvironmentObject

SwiftUI 中的@Environment 和@EnvironmentObject 有什么区别?

从我从文档中发现的内容来看,@Environment 似乎旨在用于像 ColorScheme 这样的全局依赖项。但我找不到它们之间的任何确切区别。例如,它们可以互换使用吗?

swiftui

7
推荐指数
5
解决办法
1903
查看次数

合并中的发布者与 AnyPublisher

AnyPublisher 在Combine 中的作用是什么,为什么在很多例子中,包括在WWDC Combine 实践中,27:40他们返回AnyPublisher,使用的是.eraseToAnyPublisher,而不只是返回一个Publisher?

苹果公司的文件说,

使用 AnyPublisher 包装类型包含您不想向订阅者或其他发布者公开的详细信息的发布者。

但是谁能举一个例子来说明它在哪里有用?

swift combine

6
推荐指数
1
解决办法
4428
查看次数

SwiftUI 符合 Hashable

我们如何让 SwiftUI 对象,尤其是 Image 符合 Hashable 协议?

我知道它们符合 Equatable 协议,所以主要问题是如何获取 Hash 值或使用该hash(into:)函数?

swiftui

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

Swift函数只能调用一次

编写一段只能执行一次的代码的最简单方法是什么?

我知道一种方法但有问题.

首先,我写了一个布尔变量,它具有负值,但可以设置为正值,之后不能更改

 var hasTheFunctionCalled : Bool = false {
   didSet{
       hasTheFunctionCalled = true
   }
} 
Run Code Online (Sandbox Code Playgroud)

然后在其中编写函数和代码:

func theFunction(){
   if !hasTheFunctionCalled{
      //do the thing
   }
   hasTheFunctionCalled = true
 } 
Run Code Online (Sandbox Code Playgroud)

但问题是变量可以从范围内的其他地方更改,这个解决方案看起来并不那么简单和具体.

static lazy-loading function grand-central-dispatch swift

3
推荐指数
3
解决办法
2192
查看次数

滚动时不会触发Timer.TimerPublisher

我试图在SwiftUI上创建一个计时器,该计时器工作得很好:

import SwiftUI
import Combine    
struct ContentView: View {
let currentTimePublisher  = Timer.TimerPublisher(interval: 1.0, runLoop: .main, mode: .default)
    .autoconnect()

@State private var currentTime = Date()
var body: some View {

    VStack{
        Text("Time is:")
        Text("\(currentTime)")
        }.onReceive(currentTimePublisher) { (date) in
            self.currentTime = date
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我试图将VStack放在任何可滚动的内容中,无论是List还是ScrollView,在滚动屏幕时都没有更新。当我不滚动时,它工作得很好。

如您所见,我还将TimerPublisher放置在主线程上,但这没有任何改变。

滚动/交互时,如何使SwiftUI更新时间?

ios swift swiftui combine

3
推荐指数
1
解决办法
111
查看次数

如何在SwiftUI中的ScrollView中隐藏/删除ScrollBar?

如果ScrollView的内容大于屏幕,则在滚动时会出现侧面的滚动条。我找不到任何可以帮助我隐藏它的东西。

swiftui

2
推荐指数
3
解决办法
355
查看次数