iOS应用开发:数据存储与偏好设置实践
立即解锁
发布时间: 2025-08-17 02:01:19 阅读量: 3 订阅数: 10 

# iOS应用开发:数据存储与偏好设置实践
## 1. Playground文件存储测试
Playground可用于文件存储测试,以验证各种数据存储技术。操作步骤如下:
1. 创建新的Playground。
2. 输入以下代码:
```swift
import UIKit
let userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setInteger(10, forKey: "age")
userDefaults.setObject("John", forKey: "name")
userDefaults.synchronize()
let Library:String =
NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory,
NSSearchPathDomainMask.UserDomainMask, true)[0] as String + "/Preferences"
```
3. 点击`let Library:String =`声明行右侧的“眼睛”图标,复制路径。
4. 打开OS X终端,输入`open `并粘贴路径,按回车键。
5. 在打开的Finder窗口中,找到生成的plist文件,双击可在Xcode中查看内容。
## 2. 创建隐式偏好设置应用
### 2.1 项目概述
创建一个名为BackgroundColor的iOS应用,该应用包含一个开关和一个滑块,用于设置背景颜色。应用会使用偏好设置恢复用户上次离开时的状态。
### 2.2 项目设置
1. 在Xcode中创建一个新的单视图iOS应用,命名为BackgroundColor。
2. 规划变量和连接:
- 两个出口:`toggleSwitch`(开关)和`hueSlider`(滑块)。
- 一个动作:`setBackgroundHueValue`,当开关或滑块值改变时触发。
### 2.3 添加关键常量
在`ViewController.swift`文件的类行之后添加以下常量:
```swift
let kOnOffToggle="onOff"
let kHueSetting="hue"
```
### 2.4 设计界面
1. 打开`Main.storyboard`文件,在Interface Builder中设计界面。
2. 将视图切换到合理的模拟尺寸。
3. 从对象库中拖动一个`UISwitch`到视图左下角,一个`UISlider`到视图右下角,并设置滑块初始值为0。
### 2.5 创建和连接出口与动作
1. **添加出口**:
- 从开关控制拖动到`ViewController.swift`中常量下方,创建名为`toggleSwitch`的出口。
- 对滑块重复上述操作,创建`hueSlider`出口。
2. **添加动作**:
- 从滑块控制拖动到`ViewController.swift`中变量属性声明下方,定义`setBackgroundHueValue`动作,在值改变事件触发。
- 使用连接检查器或控制拖动将开关连接到同一动作。
### 2.6 实现应用逻辑
更新`setBackgroundHueValue`方法:
```swift
@IBAction func setBackgroundHueValue(sender: AnyObject) {
if toggleSwitch.on {
view.backgroundColor=UIColor(hue: CGFloat(hueSlider.value),
saturation: 0.75, brightness: 0.75, alpha: 1.0)
} else {
view.backgroundColor=UIColor.whiteColor()
}
}
```
### 2.7 存储BackgroundColor偏好设置
更新`setBackgroundHueValue`方法以存储偏好设置:
```swift
@IBAction func setBackgroundHueValue(sender: AnyObject?) {
var userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setBool(toggleSwitch.on, forKey: kOnOffToggle)
userDefaults.setFloat(hueSlider.value, forKey: kHueSetting)
userDefaults.synchronize()
if toggleSwitch.on {
view.backgroundColor=UIColor(hue: CGFloat(hueSlider.value),
saturation: 0.75, brightness: 0.75, alpha: 1.0)
} else {
view.backgroundColor=UIColor.whiteColor()
}
}
```
### 2.8 读取BackgroundColor偏好设置
更新`viewDidLoad`方法以读取偏好设置:
```swift
override func viewDidLoad() {
super.viewDidLoad()
var u
```
0
0
复制全文