这可能看起来像一个奇怪的问题,但我想在我花几个小时试图实现它之前会问这里。 在我的应用程序中,我将视图属性(子视图的数量等)保存到sqlite3数据库。 在回读数据时,我认为“将视图存储在数据库中会不会那么容易了?”
那么,你认为使用类似blob类型的东西是可能的吗?
类似的东西:
view = sqlite3_column_blob(statement, 0);
要检索这听起来有效吗?我最关心的是知道插入和选择视图的大小。这样的事情是可能的还是没有记录,因为它太荒谬了?
谢谢!
然后把它拿出来
答案 0 :(得分:2)
UIView
符合NSCoding
,这意味着您可以对其进行序列化和反序列化。这正是nib文件的工作原理。首先,请参阅Archives and Serializations Programming Guide。
序列化UIView
的一种简单方法是这样的:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:view]
然后你可以用方便的方式写出data
。
要反序列化视图,请使用:
UIView *view = [NSKeyedUnarchiver unarchiveObjectWithData:data];
这将创建整个视图层次结构的新副本。
请注意,UIView
仅序列化自己的属性。如果您继承UIView
并希望序列化其他属性,则需要覆盖encodeWithCoder:
和initWithCoder:
以添加属性。详情请见Encoding and Decoding Objects。