如果我有struct这样的:
struct Stuff: Codable {
var id: String
enum CodingKeys: String, CodingKey, CaseIterable {
case id = "Banana"
}
}
如何在不将其硬编码为某处的开关的情况下转换Stuff.CodingKeys.id为生成字符串?"id"
两者兼而有之。.stringValue_.rawValueBanana
更新
我在 Swift 论坛上找到了一个如下所示的解决方案:
@_silgen_name("swift_EnumCaseName")
func _getEnumCaseName<T>(_ value: T) -> UnsafePointer<CChar>?
func getEnumCaseName<T>(for value: T) -> String? {
if let stringPtr = _getEnumCaseName(value) {
return String(validatingUTF8: stringPtr)
}
return nil
}
也能创造奇迹。
但是,任何人都可以确认这是否会被视为私有 API 会导致 Apple 的应用程序审查失败?我的应用程序适用于 iOS。