Skip to content

Commit e34242f

Browse files
committed
update README
1 parent 1d4f3c2 commit e34242f

1 file changed

Lines changed: 47 additions & 43 deletions

File tree

README.md

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,51 @@ A Swift library for serializing `Codable` types to and from `Any` and `UserDefau
88

99
## Usage
1010

11+
### UserDefaults
12+
13+
Encode and decode [`Codable`](https://developer.apple.com/documentation/swift/codable) types with [`UserDefaults`](https://developer.apple.com/documentation/foundation/userdefaults):
14+
15+
```swift
16+
try UserDefaults.standard.encode(
17+
User(id: "1", name: "Herbert"),
18+
forKey: "owner"
19+
)
20+
21+
try UserDefaults.standard.encode(
22+
URL(string: "fish.com"),
23+
forKey: "url"
24+
)
25+
26+
try UserDefaults.standard.encode(
27+
Duration.nanoseconds(1),
28+
forKey: "duration"
29+
)
30+
```
31+
32+
Values are persisted in a friendly representation of plist native types:
33+
34+
```swift
35+
let defaults = UserDefaults.standard.dictionaryRepresentation()
36+
37+
[
38+
"owner": ["id": 1, "name": "Herbert"],
39+
"url": URL(string: "fish.com"),
40+
"duration": [0, 1000000000]
41+
]
42+
```
43+
44+
Decode values from the defaults:
45+
46+
```swift
47+
let owner = try UserDefaults.standard.decode(Person.self, forKey: "owner")
48+
49+
let url = try UserDefaults.standard.decode(URL.self, forKey: "url")
50+
51+
let duration = try UserDefaults.standard.decode(Duration.self, forKey: "duration")
52+
```
53+
54+
### KeyValueEncoder
55+
1156
[`RawRepresentable`](https://developer.apple.com/documentation/swift/rawrepresentable) types are encoded to their raw value:
1257

1358
```swift
@@ -34,6 +79,8 @@ struct User: Codable {
3479
let any = try KeyValueEncoder().encode(User(id: 1, name: "Herbert"))
3580
```
3681

82+
### KeyValueDecoder
83+
3784
Decode values from `Any`:
3885

3986
```swift
@@ -57,7 +104,6 @@ let user = try KeyValueDecoder().decode(User.self, from: [["id": 1, "name": "Her
57104
let ascii = try KeyValueDecoder().decode([UInt8].self, from: [10, 100, 1000])
58105
```
59106

60-
61107
## Date Encoding/Decoding Strategy
62108

63109
The encoding of `Date` can be adjusted by setting the strategy.
@@ -178,45 +224,3 @@ decoder.keyDecodingStrategy = .convertFromSnakeCase
178224
179225
let person = try decoder.decode(Person.self, from: dict)
180226
```
181-
182-
## UserDefaults
183-
Encode and decode [`Codable`](https://developer.apple.com/documentation/swift/codable) types with [`UserDefaults`](https://developer.apple.com/documentation/foundation/userdefaults):
184-
185-
```swift
186-
try UserDefaults.standard.encode(
187-
User(id: "1", name: "Herbert"),
188-
forKey: "owner"
189-
)
190-
191-
try UserDefaults.standard.encode(
192-
URL(string: "fish.com"),
193-
forKey: "url"
194-
)
195-
196-
try UserDefaults.standard.encode(
197-
Duration.nanoseconds(1),
198-
forKey: "duration"
199-
)
200-
```
201-
202-
Values are persisted in a friendly representation of plist native types:
203-
204-
```swift
205-
let defaults = UserDefaults.standard.dictionaryRepresentation()
206-
207-
[
208-
"owner": ["id": 1, "name": "Herbert"],
209-
"url": URL(string: "fish.com"),
210-
"duration": [0, 1000000000]
211-
]
212-
```
213-
214-
Decode values from the defaults:
215-
216-
```swift
217-
let owner = try UserDefaults.standard.decode(Person.self, forKey: "owner")
218-
219-
let url = try UserDefaults.standard.decode(URL.self, forKey: "url")
220-
221-
let duration = try UserDefaults.standard.decode(Duration.self, forKey: "duration")
222-
```

0 commit comments

Comments
 (0)