Skip to content

Commit

Permalink
Merge pull request #3 from hewigovens/master
Browse files Browse the repository at this point in the history
Refine zh-CN translation
  • Loading branch information
nmdias authored Aug 29, 2017
2 parents 3a7e721 + 83da492 commit 53aa9b7
Showing 1 changed file with 30 additions and 24 deletions.
54 changes: 30 additions & 24 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,63 +8,69 @@

[English](README.md)

DefaultsKit 是利用Swift4强大的Codable,在UserDefaults基础上提供一层简单且强大的封装。它仅使用少于70行代码来实现这些功能。
如何安装 >> [`指南`](https://github.com/nmdias/DefaultsKit/blob/master/INSTALL.md) <<

使用说明
第一步:
实例化或者使用单例来初始化
DefaultsKit 是一个利用 Swift4 强大的 Codable,在 UserDefaults 基础上提供一层简单且强大的封装。它仅使用少于 70 行代码来实现这些功能。

## 使用说明

第一步: 实例化或者从 `Defaults` 获取一个 `shared` 实例

```swift
let defaults = Defaults() // 或者使用 let defaults = Defaults.shared
```

第二步:

```swift
// 定义一个键(key)
// 定义一个键 (key)
let key = Key<String>("someKey")

// 设置值(value)
// 设置值 (value)
defaults.set("Codable FTW 😃", for: key)

// 通过设置的key来查看返回的value结果值
// 通过设置的 key 来查看返回的 value 结果值
defaults.get(for: key) // 输出: Codable FTW 😃
```

判断某个键(key)是否含有某个值(value)
## 判断某个键是否含有某个值

```swift
if defaults.has(key) {
// 书写你自己的代码
}
```

> 如果你只需要知道该键值队(key,value)是否存在,而不需要使用该key使用的返回值(value),使用has()这个方法代替这个可选的get(for:key)方法。对于一些复杂的对象,它可以减少避免一些不必要的转换
> 如果你只需要知道该键值对 (key,value) 是否存在,而不需要使用该 key 使用的返回值 (value),你可以使用 `has()`这个方法代替可选的 `get(for:key)` 方法。对于一些复杂的对象,它可以减少避免一些不必要的反序列化。

复杂的对象存储
一个遵循Codable协议的复杂对象需要存储
### 复杂的对象存储

存储一个遵循 [Codable](https://developer.apple.com/documentation/swift/codable) 协议的复杂对象:

```swift
struct Person: Codable {
let name: String
let age: Int
}

// 然后创建一个键(key)
// 然后创建一个键
let key = Key<Person>("personKey")

// 获取一个实例符合Codable协议的枚举,结构体或者类
// 获取一个遵循 Codable 协议的枚举,结构体或者类的实例
let person = Person(name: "Bonnie Greenwell", age: 80)

// 赋值
defaults.set(person, for: key)

// 最后查看key返回值的value
// 最后查看 key 返回值的 value
let person = defaults.get(for: key)
person?.name // Bonnie Greenwell
person?.age // 80
```
嵌套对象的存储
只要是遵循Codable协议,你也可以使用嵌套对象
### 嵌套对象的存储

只要是遵循 Codable 协议的对象,你都可以嵌套地使用它们。

```swift
enum Pet: String, Codable {
Expand All @@ -77,25 +83,25 @@ struct Person: Codable {
let pets: [Pet]
}

// 获取一个遵循Codable协议的实例
// 获取一个遵循 Codable 协议的实例
let person = Person(name: "Claire", pets: [.cat])

// 赋值
defaults.set(person, for: key)

// 查看key返回值的value
// 查看 key 返回值的 value
let person = defaults.get(for: key)
person?.name // Claire
person?.pets.first // cat
```

## 开源协议

## License
DefaultsKit 使用 MIT 协议,更多内容可以查看 [LICENSE](https://github.com/nmdias/DefaultsKit/blob/master/LICENSE)

DefaultsKit is released under the MIT license. See [LICENSE](https://github.com/nmdias/DefaultsKit/blob/master/LICENSE) for details.

### Help Wanted
### 寻求帮助
#### [Review/Translate this file to Chinese](https://github.com/nmdias/DefaultsKit/issues/1)
Chinese is the #1 spoken language in the world and I'd love to have DefaultsKit be more inclusive, unfortunately I don't speak Chinese. If you know chinese, and would like to help out, please see [issue #1](https://github.com/nmdias/DefaultsKit/issues/1).

Thank you 🙏
汉语是世界上使用人数最多的语言,我希望 DefaultsKit 能被更多的人使用,但是我不会说汉语。如果你会汉语,而且愿意帮忙,请看看 [issue #1](https://github.com/nmdias/DefaultsKit/issues/1)

谢谢 🙏

0 comments on commit 53aa9b7

Please sign in to comment.