Ios ';编码键';由于';私人';可编码结构的保护级别
我想检查print语句是否打印“Key:messageTimestamp”,这样我就可以定义Ios ';编码键';由于';私人';可编码结构的保护级别,ios,swift,struct,private,codable,Ios,Swift,Struct,Private,Codable,我想检查print语句是否打印“Key:messageTimestamp”,这样我就可以定义让disusionmessagetimestampkey=DiscussionMessage.CodingKeys.messageTimestamp.stringValue。但我收到一个错误“CodingKeys”由于“private”保护级别而无法访问。当我试图访问定义结构的文件或其他文件中的CodingKeys时,会出现此错误。我错过了什么?我是否无法访问默认的编码键 struct Discussio
让disusionmessagetimestampkey=DiscussionMessage.CodingKeys.messageTimestamp.stringValue
。但我收到一个错误“CodingKeys”由于“private”保护级别而无法访问。当我试图访问定义结构的文件或其他文件中的CodingKeys
时,会出现此错误。我错过了什么?我是否无法访问默认的编码键
struct DiscussionMessage: Codable {
let message, userCountryCode, userCountryEmoji, userName, userEmailAddress: String
let messageTimestamp: Double
let fcmToken, question, recordingUrl, profilePictureUrl: String?
}
let disucssionMessageTimestampKey = "messageTimestamp"
print("Key: ", DiscussionMessage.CodingKeys.messageTimestamp.stringValue)
我正在使用以下代码。不是最理想的解决方案,如果我可以访问默认的CodingKeys
struct DiscussionMessage: Codable {
let message, userCountryCode, userCountryEmoji, userName, userEmailAddress: String
let messageTimestamp: Double
let fcmToken, question, recordingUrl, profilePictureUrl: String?
enum CodingKeys: CodingKey {
case message, userCountryCode, userCountryEmoji, userName, userEmailAddress
case messageTimestamp
case fcmToken, question, recordingUrl, profilePictureUrl
}
}
现在还不清楚您想做什么,但您还没有将CodingKeys
enum添加到结构中。@Paulw11我想要一个字符串作为变量名。所以messageTimestamp是变量名,我希望它作为字符串“messageTimestamp”返回,以便我可以在其他地方使用它。我在这里解释一下:然后您需要显式地将CodingKeys
enum添加到包含结构中所有属性的结构中。是的,我从另一个答案中注意到了这一点。是否有自动生成此枚举的方法?没有。您可以依赖自动属性映射(由于它是私有的
),也可以显式添加一个。老实说,将静态字符串添加到定义要使用的字段名的结构中会更简单。