Hi there,

I've recently developed a wrapper around UserDefaults (formerly known as 
NSUserDefaults), which adds type safety and omits the need for stringified API 
calls. I’m not sure if this development fits in here, but anyway I’m going to 
give it a try:

Since I use UserDefaults for storing preference settings most of the time, I 
simply called the wrapper class Setting. A typical declaration would look like:

var favoriteLanguage = Setting<String>(key: "favoriteLanguage", defaultValue: 
"ObjectiveC“)

you can change a setting by simply calling:

favoriteLanguage.value = "Swift“

The Setting type is generic and will accept any class or struct, which conforms 
to the

UserDefaultConvertible

protocol (which I also created). This allows enums (which have a 
UserDefaultConvertible RawValue) to be stored into user defaults like this:

enum Languages: Int, UserDefaultConvertible {
    case Swift = 0
    case ObjectiveC
    case Java
}

favoriteLanguage = Setting<Languages>(key: "favoriteLanguage", defaultValue: 
.ObjectiveC)
favoriteLanguage.value = .Swift

With SE-0143 being implemented into Swift 4, the above approach would also work 
nicely with Arrays and Dictionaries. For any implementation details please 
refer to https://github.com/oliverschaefer/Settings 
<https://github.com/oliverschaefer/Settings>. Before proceeding with a SE 
proposal, I’d like to hear your opinion. So thanks for taking your time to look 
at my code in advance.

Cheers,
Oliver 
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to