我昨天升级了Firebase,现在遇到了一个非常不寻常的问题.当我运行模拟器时,我得到一个快速的编译错误"Segmentation fault:11"这几行代码描述了错误,但它们绝对没有帮助.从错误中,我看到的唯一可能是提供线索的是底部.它说:
  1. While loading members for 'ProfileTableViewController' at <invalid loc>
  2. While deserializing decl #101 (PATTERN_BINDING_DECL)
  3. While deserializing decl #2 (VAR_DECL)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我上面输入的错误并不一致.提到的视图控制器在我使用Firebase的三个视图控制器之间旋转.
为了尝试解决这个问题,我注释掉了ProfileTableViewController类中的所有代码,但是我仍然在引用该视图控制器时出错.视图控制器中运行的唯一代码是:
  import UIKit
  import Firebase
  import FirebaseDatabase
Run Code Online (Sandbox Code Playgroud)
(我也在其他视图控制器中使用FirebaseAuth).
解决问题的方法是点击"干净",重新启动xcode,在启动时再次清理,然后运行程序.除非我对程序中的代码进行任何更改,否则一切都会正常工作.即使我所做的只是添加注释,错误也会重新出现.
我不想每次写几行代码时关闭xcode并重启,我担心上传到app store时会遇到问题.
我正在使用XCode 7.3.1,我的部署目标是9.3
非常感谢您给予的任何见解!谢谢!
我有一个应用程序,用户可以在其中跟踪他们的连续记录。由于处理夏令时的方式,今天的条纹正在中断。日期以“MM/dd/yyyy”格式的字符串存储在 Firebase 数据库中。因此,对于在 2019 年 11 月 3 日星期日使用该应用程序的用户,字符串值是“11/03/2019”,它转换为打印的日期值
2019-11-03 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
以下是我从当前日期中截取小时/分钟的方法,以便我可以将其与其他日期进行比较:
final dateFormat = intl.DateFormat('MM/dd/yyyy');
final todayString = dateFormat.format(DateTime.now());
final today = dateFormat.parse(todayString);
print('Today is ' + today.toString());
Run Code Online (Sandbox Code Playgroud)
当我打印今天的价值时,我得到:
2019-11-04 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
当我尝试像这样获取昨天的 DateTime 值时:
 today.subtract(Duration(days: 1))
Run Code Online (Sandbox Code Playgroud)
该值打印如下:
2019-11-03 01:00:00.000
Run Code Online (Sandbox Code Playgroud)
请注意,小时值现在包含一个 1。
确定是中断还是继续连续记录。我正在使用 DateTime.compareTo() 函数将用户的最后使用日期与昨天进行比较。
final activeStreak = this.lastTraining.compareTo(today.subtract(Duration(days: 1)));
Run Code Online (Sandbox Code Playgroud)
对于在 2019 年 11 月 3 日星期日使用该应用程序的用户, 的值应该返回为 0,因为昨天应该等于昨天。但是由于夏令时,现在昨天被视为昨天,因此返回值 -1。
我怎样才能在接下来的几年里防止这个错误?