【发布时间】:2011-04-11 12:45:52
【问题描述】:
我有一个 UILabel 的对象
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
label1.text = @"LABEL AREA";
我想将它保存在我的数据库(sqlite)中。
我的想法是使用
将此对象转换为 NSData[NSKeyedArchiver archivedDataWithRootObject:label1]; //step1
并将此 NSData 转换为 NSString(步骤 2),然后将该 NSString 保存到数据库(步骤 3)。
当我需要我的 UILabel 时。我可以从数据库中获取 NSString,将其转换为 NSData,然后使用
[NSKeyedUnarchiver unarchiveObjectWithData:];
获取我的 UILabel。
但我在“第 2 步”中遇到了问题。当我使用
NSString *strWithEncode = [[NSString alloc] initWithData:dataRaw encoding:NSUTF8StringEncoding];
我得到一个空对象。我不知道原因。 为什么?
非常感谢!
【问题讨论】:
-
如果您的数据不是正确的字符串,那么很可能会失败。您使用的是什么类型的数据库,几乎都支持二进制数据,如果它肯定需要是字符串(例如 xml),那么使用 base64 编码。
标签: iphone objective-c