0

如果我有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。

4

0 回答 0