Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase事务-这是否正确?_Ios_Swift_Firebase_Swift3_Firebase Realtime Database - Fatal编程技术网

Ios Firebase事务-这是否正确?

Ios Firebase事务-这是否正确?,ios,swift,firebase,swift3,firebase-realtime-database,Ios,Swift,Firebase,Swift3,Firebase Realtime Database,所以我四处看看,有很多人在做Firebase交易,他们都不一样。我所要做的就是在计数器上加上1,而iv所得到的效果非常好,但我想检查一下我做得是否正确,因为我的方法比他们的文档简单得多 欢呼就是前进!:) 我觉得这很好,只要你对逻辑感到满意 您当前的逻辑只是一个更新-如果没有现有post,您将中止事务(currentData.value将为空) 您可以从likeCount中删除1,而不是像您在说明中提到的那样添加1 您拥有的版本当然可以工作,但您可能希望实现它,它可以让您记录错误,特别是在调试/

所以我四处看看,有很多人在做Firebase交易,他们都不一样。我所要做的就是在计数器上加上1,而iv所得到的效果非常好,但我想检查一下我做得是否正确,因为我的方法比他们的文档简单得多

欢呼就是前进!:)


我觉得这很好,只要你对逻辑感到满意

您当前的逻辑只是一个更新-如果没有现有post,您将中止事务(
currentData.value
将为空)

您可以从
likeCount
中删除1,而不是像您在说明中提到的那样添加1


您拥有的版本当然可以工作,但您可能希望实现它,它可以让您记录错误,特别是在调试/测试时。

谢谢!啊,是的,这是我发布的不同逻辑,哎呀!创建项目时,它将默认的like计数器设置为0,这样它就不会中止事务。我确实看到有一个完成块,我可以使用,但我仍然扔了,如果我需要它!但是谢谢你!
 database.child("stories").child(articleKey).runTransactionBlock({ (currentData:FIRMutableData) -> FIRTransactionResult in
            if var post = currentData.value as? [String: AnyObject] {

                var likeCount = post["storyLikes"] as? Int ?? 0
                likeCount += 1
                post["storyLikes"] = likeCount as AnyObject?
                currentData.value = post

                return FIRTransactionResult.success(withValue: currentData)
            }
            //Abort like if there was a problem
            return FIRTransactionResult.abort()
        })