在UserDefaults或任何其他服务中使用字符串键时,通常的做法是使用“。”分隔的单词来构建我的键。例如:
"com.domain.subdomain.scope.key"
有时候,我们在同一个作用域中有多个键名,在同一个子域中(或我们要使用的任何措辞)有多个作用域。
从建模的角度来看,可以使用Structs或Enums对其进行轻松建模:
struct Domain {
struct SubdomainA {
enum ScopeA {
case keyA
case keyB
case keyC
[...]
}
enum ScopeB {
case keyA
case keyB
case keyC
[...]
}
[...] // ScopeC
}
[...] // SubdomainB
}
在编写类似以下内容时能够运行自动完成功能:
let key = Domain.SubdomainB.ScopeC.keyB
请注意,key
的类型为Domain.SubdomainB.ScopeC
有没有简单的方法可以使用枚举或结构来使用此代码结构,然后有一种将整个内容转换为字符串的方法?
例如,假设有一个名为reverseStringValue
的方法可以完成此工作:
let key = Domain.SubdomainB.ScopeC.keyB.reverseStringValue
请注意,这一次我们希望key
为String
,并且此字符串的每个组成部分(“。”之间的单词)都是由链的每个结构/枚举递归定义的。
您将如何处理? (不会过于复杂)。
谢谢!