- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用适用于 iOS 的 Firebase SDK (2.4.2)。以下代码是 SLComposeServiceViewController
对象中使用的 didSelectPost()
函数的一部分。在常规 UIViewController
中使用时,指出这种行为是不一样的非常重要(我知道这很奇怪)。
假设有以下基本代码:
override func presentationAnimationDidFinish() {
// Retrieving content and identifying type here
}
override func didSelectPost() {
self.myRootRef.runTransactionBlock({
(currentData:FMutableData!) in
currentData.value = "test"
// Finalizing the transaction
return FTransactionResult.successWithValue(currentData)
}
)
self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
}
交易完成后,node_value
将从 Firebase 中完全消失。该值未设置,节点已删除。这是一个非常奇怪和意外的行为!
另一方面,以下代码按预期工作。
override func didSelectPost() {
self.myRootRef.setValue("test", withCompletionBlock: {
(error:NSError?, ref:Firebase!) in
if (error != nil) {
print("Data could not be saved.")
} else {
print("Data saved successfully!")
}
})
self.extensionContext!.completeRequestReturningItems([], completionHandler: nil)
}
几天前不存在这个问题,最后我运行了上面的代码。关于问题是什么的任何见解?
最佳答案
如果将 nil
设置为 Firebase 数据库中的路径,它将执行与 .removeValue()
相同的操作。
在运行事务时,您应该检查nil
。因为如果没有写入默认值,可以使用nil
调用事务。 p>
myRootRef.runTransactionBlock({
(currentData:FMutableData!) in
var value = currentData.value as? Int
if value == nil {
value = 0
}
currentData.value = value! + 1
return FTransactionResult.successWithValue(currentData)
})
阅读Firebase Docs获取更多信息。
关于ios - Firebase runTransactionBlock() 删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33966837/
我有一个应用,当用户点击 UIButton 时, 1. 我在 Firebase 中更新一个 child (比如 tapCount) 加载带有图像的 ViewController。 我正在使用 tran
我正在阅读此处显示的 firebase.google 示例 https://firebase.google.com/docs/database/ios/save-data#save_data_as_t
我有这个函数试图运行事务来更新 Firebase 值: if opponentPoints FIRTransactionResult in p
我正在使用适用于 iOS 的 Firebase SDK (2.4.2)。以下代码是 SLComposeServiceViewController 对象中使用的 didSelectPost() 函数的一
我的共享扩展包含以下代码作为 didSelectPost() 段的一部分: override func didSelectPost() { if self.sharedURL != nil {
我有更新用户经验值的函数: func submitExpPoints(_ points: Int, uid: String) { let dbRef = FIRDatabase.databas
每次我运行 runTransactionBlock 它都会给我 null,尽管那个位置有一个节点:- FIRMutableData (top-most transaction) (null) 在行:-
更新Xcode 8后,将Swift 2项目转为Swift 3,其他代码运行正常,但是runTransactionBlock不运行,发现这个错误: "runTransactionBlock: usage
我是一名优秀的程序员,十分优秀!