数据持久化与视图状态保存的实用技巧
1. 将对象转换为属性列表对象
属性列表的一个重大限制是,它们只能包含特定的属性列表对象,如 NSNumber、NSString、NSDictionary 等。若要将数据存储在用户默认设置(或任何属性列表)中,必须将其转换为这些对象之一。以下是三种常见的存储其他类型值的技术:
- 将值转换为字符串 :这种方法相对简单,因为有许多 Cocoa Touch 函数可实现此转换。例如,若要在用户默认设置中存储 CGRect 值,CGRect 并非属性列表对象,甚至不是对象。可以将其四个浮点字段分别存储为单独的值:
CGRect saveRect = self.someView.frame;
[userDefaults setFloat:saveRect.origin.x forKey:@"HPFrame.x"];
[userDefaults setFloat:saveRect.origin.y forKey:@"HPFrame.y"];
[userDefaults setFloat:saveRect.size.height forKey:@"HPFrame.height"];
[userDefaults setFloat:saveRect.size.width forKey:@"HPFrame.width"];
不过,这样做恢复矩形时需要反向操作,较为繁琐。幸运的是,有两个函数 NSStringFromCGRect 和 CGRectFromString 可以将矩形转换为字
超级会员免费看
订阅专栏 解锁全文
2100

被折叠的 条评论
为什么被折叠?



