Swift Firestore中存储的系统日期对象的行为将发生更改,您的应用程序可能会中断?
运行我的应用程序后,我在终端中获得以下输出。应用程序不会崩溃。我应该把这个代码放在哪里?它到底有什么作用 2018-08-16 09:45:05.414410-0400 Yubi[2652:1608362]4.13.0-[Firebase/Firestore][I-FST000001]系统日期对象的行为 Firestore中存储的内容将发生更改,您的应用程序可能会中断。隐藏 此警告并确保您的应用程序不会中断,您需要添加 在调用任何其他云Firestore之前,请将以下代码添加到您的应用程序 方法: let db=Firestore.Firestore()let settings=db.settings settings.AreTimestampsSinSnapshotSenabled=true db.settings=settings 通过此更改,将读取存储在Cloud Firestore中的时间戳 返回Firebase时间戳对象,而不是系统日期对象。 因此,您还需要更新预期日期为的代码 需要一个时间戳。例如: //旧:let date:date=documentSnapshot.get(“created_at”)as!日期 //新建:let timestamp:timestamp=documentSnapshot.get(“创建时间”) 作为!Timestamp let date:date=Timestamp.dateValue() 启用新的日期时,请审核日期的所有现有用法 行为。在将来的版本中,行为将更改为新的 因此,如果您不遵循这些步骤,您的应用程序可能会崩溃Swift Firestore中存储的系统日期对象的行为将发生更改,您的应用程序可能会中断?,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,运行我的应用程序后,我在终端中获得以下输出。应用程序不会崩溃。我应该把这个代码放在哪里?它到底有什么作用 2018-08-16 09:45:05.414410-0400 Yubi[2652:1608362]4.13.0-[Firebase/Firestore][I-FST000001]系统日期对象的行为 Firestore中存储的内容将发生更改,您的应用程序可能会中断。隐藏 此警告并确保您的应用程序不会中断,您需要添加 在调用任何其他云Firestore之前,请将以下代码添加到您的应用程序 方法
您应该在appDelegate中添加此项,您将在其中添加配置
FirebaseApp.configure()
let db = Firestore.firestore()
let settings = db.settings
settings.timestampsInSnapshotsEnabled = true
db.settings = settings
通过将AreTimestampsInSnapshotEnabled设置为true,它将保存时间戳而不是日期
// old: This is old code returning Date object
let date: Date = documentSnapshot.get("created_at") as! Date
// new: This is new code returning Timestamp object
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
因此,当您读取它时,它将返回时间戳,因此,无论在代码中的什么地方,只要读取了日期,它现在就应该读取时间戳,并按照建议将其转换为日期对象
旧代码
// old: This is old code returning Date object
let date: Date = documentSnapshot.get("created_at") as! Date
// new: This is new code returning Timestamp object
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
应替换为新代码
// old: This is old code returning Date object
let date: Date = documentSnapshot.get("created_at") as! Date
// new: This is new code returning Timestamp object
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
希望它能帮助你理解这个警告。您必须对现有代码进行更改以满足新的指导原则,否则稍后会由于类型不匹配而导致崩溃。我没有包含时间戳代码,因为我没有处理日期的常量。好的,没问题。你可以忽略它,这是对每个人的一般警告。可能在将来,如果您将使用它,那么您将意识到这一变化。:)