如何解决快速获取可编码的属性名称作为字符串 编辑
编辑
let disucssionMessageTimestampKey = discussionMessage.CodingKeys.messageTimestamp.stringValue
给出错误:
'CodingKeys' is inaccessible due to 'private' protection level
struct discussionMessage: Codable {
let message,userCountryCode,userCountryEmoji,userName,userEmailAddress: String
let messageTimestamp: Double
let fcmToken,question,recordingUrl,profilePictureUrl: String?
}
我想定义一个变量 disucssionMessageTimestampKey
,其值为 messageTimestamp
。我想在以下查询中使用 disucssionMessageTimestampKey
变量:
messagesReference.queryOrdered(byChild: "messageTimestamp").queryStarting(atValue: NSDate().timeIntervalSince1970).observe(.childAdded)
这样我就不必对变量名称的字符串值(“messageTimestamp”)进行硬编码。
现在我知道我可以只做 let disucssionMessageTimestampKey: String = "messageTimestamp"
。但这又容易出错。所以我想知道是否有一种方法可以获取字符串值 messageTimestamp
而无需在任何地方定义它。
像这样(我知道这行不通,只是为了让我知道我在找什么)
let disucssionMessageTimestampKey: String = String(describing: discussionMessage.messageTimestamp) // Will store disucssionMessageTimestampKey = "messageTimestamp"
另外,是否可以首先将键值完全定义为字符串,然后将它们用作实际可编码对象中的变量名? IE。首先定义let disucssionMessageTimestampKey: String = "messageTimestamp"
,然后使用变量disucssionMessageTimestampKey
定义可编码对象的属性(messageTimestamp)应该被调用。 (这是低优先级但很好奇,似乎与手头的问题有关)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。