- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正面临 Firebase 快照的问题。我成功地将我的 Fierbase 帐户与我的 Xcode 项目联系起来。我能够更改 Firestore 云中的数据。但我无法阅读。这是我的功能:
class UserService{
static func CheckIfMoreThanOneUserIsLoggedIn() -> Bool{
var BoolenToReturn:Bool?
let AuthUser = Auth.auth().currentUser
let userId = AuthUser!.uid
let localDeviceString = Constants.UserDefaultsStorage.string(forKey: userId)
// LocalDeviceString is generated (20 random letters) when the user is logged in succesfully.
//This DeviceString would be stored on one hand in the cloud on the other hand on the device.
//When the user open the Application it checks if the localDeviceString of the cloud is the same as the String stored on the device.
//I’m able to denie the user access through multiple devices simultaneously (-> Any imporvent is desired)
let newUserReference = Firestore.firestore().collection("users").document(userId)
newUserReference.getDocument {
(querySnapshot, err) in // Code never runs the closure
guard err != nil else {
return
}
for document in querySnapshot!.data()! {
if document.key == "RandomString" {
let docValue:String = document.value as! String
if docValue == localDeviceString{
BoolenToReturn = true
}
else{
BoolenToReturn = false
}
}
}
}
return BoolenToReturn ?? false
}
}
LaunchViewController
中的函数。 .此外,我将 segue 称为
HomeViewController
在
newUserReference.getDocument
的关闭中.我不想实现的目标:在 UserService 类中定义的一个函数,如果允许用户使用该应用程序,它将返回一个 bool 值。
最佳答案
我想你可能想调查一个完成处理程序。这个想法是调用一个异步函数,然后在该函数完成时执行一个任务。下面的代码几乎可以直接应用于您的问题的解决方案。
所以这是一个你可以开始的例子。假设我们有一个用户存储在用户集合中的应用程序
users
uid_0
name: "Steve"
uid_1
name: "Danno"
uid_2
name: "Junior"
uid_3
name: "Tani"
一个新用户想要注册,但该应用程序不允许重复名称。因此,我们需要查询我们的 users 集合以确定该名称是否已被使用。这是调用查询函数的代码。
self.doesUserNameExist(userName: "Steve" ) { doesExist in
if doesExist == true {
print("yep, it exists")
} else {
print("Nope - it's not there")
}
}
print("this code will execute before the above code")
那将打印是的,它存在
//determine if a user name exists in Firestore, return true if it does, false if not
func doesUserNameExist(userName: String, completion: @escaping( (Bool) -> Void) ) {
let usersCollection = self.db.collection("users")
usersCollection.whereField("name", isEqualTo: userName).getDocuments(completion: { querySnapshot, error in
if let err = error {
print(err.localizedDescription)
return
}
guard let docs = querySnapshot?.documents else { return }
if docs.count > 0 {
completion(true)
} else {
completion(false)
}
})
}
这是从异步函数“返回”数据的典型方式,因为它允许函数执行,数据有效,然后以异步方式将该数据传递回调用函数。
print("this code will execute before the above code")
将在函数闭包中的代码之前执行。
self.doesUserNameExist(userName: "Jay", completion: { doesItExist in
print(doesItExist)
})
关于ios - Firebase getDocument(querySnapshot)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61238857/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!