如何使用Swift从Parse中获取自动生成的createdAt和updatedAt字段?
我之前在使用Parse做数据查询时也碰到过一模一样的情况——其他自定义字段都能正常拿到,唯独自动生成的createdAt和updatedAt死活看不到,给你几个亲测有效的排查和解决方向:
检查自定义Parse子类的字段声明
如果你是用自定义的Parse子类来映射数据,一定要显式声明createdAt和updatedAt字段,不然Parse不会把这两个字段注入到你的对象里。举个iOS Swift的例子:class Post: ParseObject { // 自定义字段 @NSManaged var content: String? // 必须显式声明才能访问这两个自动字段 @NSManaged var createdAt: Date? @NSManaged var updatedAt: Date? }Android或者JS的思路类似:比如JS里继承
Parse.Object的子类不用额外声明,但要确保没有覆盖这两个属性的getter方法。排查查询语句的字段过滤设置
如果你在查询时用到了selectKeys()(指定只返回某些字段),一定要把createdAt和updatedAt加进去,不然Parse服务器不会返回这两个字段。比如JS里的写法:const query = new Parse.Query('Post'); query.select('content', 'createdAt', 'updatedAt'); // 必须包含自动字段另外也要检查有没有不小心用
excludeKeys()把这两个字段排除了,这种低级错误很容易犯。确认对象打印/序列化的逻辑
有时候不是拿不到这两个字段,而是你的打印或者序列化方法没把它们包含进去。比如如果自定义了对象的toString()或者description方法,要手动把createdAt和updatedAt加进去;如果是转JSON,有些框架可能会过滤掉Parse自动生成的字段,这时候可以手动提取验证:const post = await query.first(); // 手动获取并打印 console.log('Created at:', post.createdAt); console.log('Updated at:', post.updatedAt);验证数据本身的正确性
最后可以去Parse Dashboard里直接查看这条数据,确认createdAt和updatedAt字段确实有值,排除是数据本身缺失的情况。
内容的提问来源于stack exchange,提问作者Ali Alzahrani

