Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 添加新数据时的Codable和firebase警告会导致错误。有解决办法吗?_Ios_Swift_Firebase_Google Cloud Firestore - Fatal编程技术网

Ios 添加新数据时的Codable和firebase警告会导致错误。有解决办法吗?

Ios 添加新数据时的Codable和firebase警告会导致错误。有解决办法吗?,ios,swift,firebase,google-cloud-firestore,Ios,Swift,Firebase,Google Cloud Firestore,所以现在在测试模式下,当我想在我的类中添加一个新的字段值时,我也只是将它添加到firebase中。Codable将完成这项工作并解析来自firebase fine的数据。但假设我的应用程序已经发布,我有5k个用户,也就是5k个用户,我必须手动添加数据,否则他们在获取数据时都会出错,因为他们的用户类有一个新值,而firebase中的数据没有,反之亦然 有解决办法吗?我认为可以通过在客户端再次发布到firebase来修复它,以便字段值最终匹配。但我有另一个集合,它不允许用户写入,只允许读取。我唯一的

所以现在在测试模式下,当我想在我的类中添加一个新的字段值时,我也只是将它添加到firebase中。Codable将完成这项工作并解析来自firebase fine的数据。但假设我的应用程序已经发布,我有5k个用户,也就是5k个用户,我必须手动添加数据,否则他们在获取数据时都会出错,因为他们的用户类有一个新值,而firebase中的数据没有,反之亦然

有解决办法吗?我认为可以通过在客户端再次发布到firebase来修复它,以便字段值最终匹配。但我有另一个集合,它不允许用户写入,只允许读取。我唯一的想法是创建一个云函数,并将新字段添加到所有集合中


如果我通常使用字典映射来解析它,我可以选择新值。我应该使用dict映射而不是codable吗?但是,DICT映射是非常丑陋和漫长的。

听起来好像你认为新字段是可选的。在这种情况下,您不能简单地在codable类中将其标记为可选吗?啊好的。所以,从那里获取必要的属性,使用可选的更新类?这就是我要尝试的。如果您不愿意回填现有数据,根据定义,这意味着新字段是可选的。(1)您是在每次值发生更改时更新服务器,还是将该视图中的所有更改存入银行,并在发生更改时全部更新?(2) 我假设您在此文档上有一个快照侦听器,如果您这样做了,那么由于Firestore的延迟补偿,更改将在客户端上立即进行(就像它是本地的一样)。(3)如果绝对不能有客户端和服务器不同步的情况,请考虑使用需要连接的原子操作(事务或批处理写入)。我如何看到:一个快照侦听器连接到一个文档(称之为IT用户设置)。例如,当用户切换控件以更改这些设置中的值时,该值将记录在视图控制器中,当用户离开视图时,如果对任何值进行了更改,则服务器将更新。由于延迟补偿,快照侦听器在调用更新服务器时“同时”启动,然后更新用户设置模型(可能是单例)。当用户返回到该视图控制器时,即使服务器没有。。。