- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临的问题是,当用户第一次注册我的应用程序(并且我看到 Firebase 上的身份验证中添加的名称)并尝试撰写帖子时,它不允许他们,它不允许也给出一个错误。有趣的是,当用户离开应用程序、删除历史记录并重新启动应用程序时,用户可以发布帖子并写入实时数据库。做了一些测试,我看到了同样的问题,并且日志中似乎有错误:
2019-01-18 14:02:32.251806-0500 Jama3aV2[35603:8067503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C17.1:2][0x10254c2e0] get output frames failed, state 8196
2019-01-18 14:02:32.252321-0500 Jama3aV2[35603:8067503] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C17.1:2][0x10254c2e0] get output frames failed, state 8196
我尝试了很多搜索,但找不到解决方案,有人说这可能是 iOS 12 的问题,而另一些人说这是 Xcode 的问题,所以我不确定。以下是创建帖子的代码。
@IBAction func handlePostButton(_ sender: Any) {
guard let image = desciptionImage.image else {return}
var currentLocation: CLLocation!
if (CLLocationManager.authorizationStatus() == .authorizedWhenInUse || CLLocationManager.authorizationStatus() == .authorizedAlways){
currentLocation = locationManager.location
}
//Need to specify the area of ryerson.
// if ((currentLocation.coordinate.longitude < 43.657821 && currentLocation.coordinate.longitude > 43.656258 ) && (currentLocation.coordinate.latitude < -79.380299 && currentLocation.coordinate.latitude > -79.37842 )) {
self.uploadProfileImage(image, completion: { (url) in
guard let url = url else {return}
guard let userProfile = UserService.currentUserProfile else { return }
var postID: String!
//Lets make a reference to the database
var postref: DatabaseReference!
//Check which view its coming from
if self.cityLocationInNewPost?.school == nil {
postref = Database.database().reference().child("posts/school/\((self.school)!)").childByAutoId()
postID = "\((postref)!)"
print("The post ID \(String(describing: postID))")
postID = postID.replacingOccurrences(of: "https://jama3a-version2.firebaseio.com/posts/school/\((self.school)!)/", with: "")
print(postID!)
}else {
postref = Database.database().reference().child("posts/school/\((self.cityLocationInNewPost?.school)!)").childByAutoId()
}
guard let uid = Auth.auth().currentUser?.uid else { return }
self.ref = Database.database().reference().child("users/profile/\(uid)/numberOfPosts")
self.ref.observeSingleEvent(of: .value) { (snapshot) in
if let number = snapshot.value as? Int {
self.numberOfPosts = number
}
}
//This will assign this post a specific identifier that we can reference it by.
//This is referencing the place where you write a post
let postObject = [
"author":[
"uid": userProfile.uid,
"photoURL": userProfile.photoURL.absoluteString,
"username": userProfile.username,
"email": userProfile.email,
"numberOfPosts": 0
],
"text": self.textView.text,
"postphotoURL": url,
"Status": "\(self.statusOfPost)",
"timestamp": [".sv": "timestamp"],
"location":[
"latitude": currentLocation.coordinate.latitude,
"logitude": currentLocation.coordinate.longitude
],
"PostID": postID
] as [String:Any]
postref.setValue(postObject, withCompletionBlock: {Error, ref in
if Error == nil {
//This will set the value
DispatchQueue.main.asyncAfter(deadline: .now()){
if self.cityLocationInNewPost?.school == nil {
//This is coming from the subscription need to initialte that view
let Storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = Storyboard.instantiateViewController(withIdentifier: "LoggedIn2ViewController") as! LoggedIn2ViewController
vc.school = self.school
self.navigationController?.pushViewController(vc, animated: true)
}else {
self.dismiss(animated: true, completion: nil)
}
//lets set the numberofposts to the variable
self.updateNumberOfPosts()
}
}else {
print(Error?.localizedDescription as Any)
self.creatAlert(title: "Error", message: "Error making a Post!")
}
})
})
//Giving an alert that the post was succesful
let alert = UIAlertController(title: "Notification", message: "Your post is successful! Thank you for the contribution", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Awesome!", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
// }else {
// self.creatAlert(title: "Cant Make Post!", message: "Cant make post since you are not on the School's campus!")
// textView.text = ""
// }
}
以及以下内容来上传个人资料图片:
func updateNumberOfPosts() {
//We will need to increment the number of posts
guard let uid = Auth.auth().currentUser?.uid else { return }
ref = Database.database().reference().child("users/profile/\(uid)/numberOfPosts")
ref.observeSingleEvent(of: .value) { (snapshot) in
if var number = snapshot.value as? Int {
print(number)
number = number + 1
self.ref.setValue(number)
print(number)
}
}
同样,错误仅在用户首次注册并尝试发帖时发生。这影响了我的生产;我也向 Firebase 的支持团队立案。
最佳答案
您是否尝试过使用updateChildValues而不是setValue?
使用setValue
会覆盖指定位置的数据,包括任何子节点。另一方面,updateChildValues
允许您通过指定键的路径来更新较低级别的子值。
https://firebase.google.com/docs/database/ios/read-and-write
关于swift - 用户首次登录时无法写入 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260280/
有没有办法在 .swift 文件(编译成 .swift 模块)中声明函数,如下所示: 你好.swift func hello_world() { println("hello world")
我正在尝试使用 xmpp_messenger_ios 和 XMPPFramework 在 iOS 上执行 MUC 这是加入房间的代码。 func createOrJoinRoomOnXMPP()
我想在我的应用程序上创建一个 3D Touch 快捷方式,我已经完成了有关快捷方式本身的所有操作,它显示正确,带有文本和图标。 当我运行这个快捷方式时,我的应用程序崩溃了,因为 AppDelegate
我的代码如下: let assetTag = Expression("asset_tag") let query2 = mdm.select(mdm[assetTag],os, mac, lastRe
我的 swift 代码如下所示 Family.arrayTuple:[(String,String)]? = [] Family.arrayTupleStorage:String? Family.ar
这是我的 JSON,当我读取 ord 和 uniq 数据时出现错误 let response2 : [String: Any] = ["Response":["status":"SUCCESS","
我想将 swift 扩展文件移动到 swift 包中。但是,将文件移动到 swift 包后,我遇到了这种错误: "Type 'NSAttributedString' has no member 'ma
使用CocoaPods,我们可以设置以下配置: pod 'SourceModel', :configurations => ['Debug'] 有什么方法可以用 Swift Package Manag
我正在 Xcode 中开发一个 swift 项目。我将其称为主要项目。我大部分都在工作。我在日期选择器、日期范围和日期数学方面遇到了麻烦,因此我开始了另一个名为 StarEndDate 的项目,其中只
这是 ObjectiveC 代码: CCSprite *progress = [CCSprite spriteWithImageNamed:@"progress.png"]; mProgressBar
我正在创建一个命令行工具,在 Xcode 中使用 Swift。我想使用一个类似于 grunt 的配置文件确实如此,但我希望它是像 Swift 包管理器的 package.swift 文件那样的快速代码
我假设这意味着使用系统上安装的任何 swift 运行脚本:#!/usr/bin/swift 如何指定脚本适用的解释器版本? 最佳答案 Cato可用于此: #!/usr/bin/env cato 1.2
代码说完全没问题,没有错误,但是当我去运行模拟器的时候,会出现这样的字样: (Swift.LazyMapCollection (_base:[ ] 我正在尝试创建一个显示报价的报价应用。 这是导入
是否可以在运行 Swift(例如 Perfect、Vapor、Kitura 等)的服务器上使用 RealmSwift 并使用它来存储数据? (我正在考虑尝试将其作为另一种解决方案的替代方案,例如 no
我刚开始学习编程,正在尝试完成 Swift 编程书中的实验。 它要求““编写一个函数,通过比较两个 Rank 值的原始值来比较它们。” enum Rank: Int { case Ace = 1 ca
在您将此问题标记为重复之前,我检查了 this question 它对我不起作用。 如何修复这个错误: error: SWIFT_VERSION '5.0' is unsupported, suppo
从 Xcode 9.3 开始,我在我的模型中使用“Swift.ImplicitlyUnwrappedOptional.some”包裹了我的字符串变量 我不知道这是怎么发生的,但它毁了我的应用程序! 我
这个问题在这里已经有了答案: How to include .swift file from other .swift file in an immediate mode? (2 个答案) 关闭 6
我正在使用 Swift Package Manager 创建一个应用程序,我需要知道构建项目的配置,即 Debug 或 Release。我试图避免使用 .xcodeproj 文件。请有人让我知道这是否
有一个带有函数定义的文件bar.swift: func bar() { println("bar") } 以及一个以立即模式运行的脚本foo.swift: #!/usr/bin/xcrun s
我是一名优秀的程序员,十分优秀!