我的应用程序涉及用户能够拖动特定项目,如音量滑块和UIImage视图。我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目。不幸的是,我在看到“保存CGRect rect = item.frame
到NSuserDefaults
或NSKeyedArchiver
”路线时遇到了错误。还有其他建议吗?
答案 0 :(得分:17)
您可以使用NSStringFromgCGRect()和CGRectFromString()来存储它们。
答案 1 :(得分:11)
如果您在iPhone上使用键控存档,UIKit特别支持这样的添加:-encodeCGRect:forKey:
并且正是您想要的。请参阅NSCoder's UIKit additions的Apple文档。
如果您正在使用NSUserDefaults,那么您无法使用CGRects的显式编码器,但正如其他一些答案所说,您可以使用NSStringFromCGRect()
将其保存为字符串,反之亦然。
答案 2 :(得分:0)
您可能会使用CGRect
对NSData
进行编码,然后使用NSData
或NSUserDefaults
存储NSKeyedArchiver
个对象。
我不确定你在问题中提到了什么错误,可能需要更多解释?
答案 3 :(得分:-4)
您必须将CGRect中的浮点数转换为NSNumbers,然后将它们放入字典中。
如果你需要存储很多CGRect,我建议创建一个带有CGRect元素的轻量级类作为可存档的NSNumber属性。创建一个采用CGRect的初始化程序。然后编写快速NSCoder协议方法,以便整个对象可以存档
通过这种方式,您可以快速轻松地转换,存储然后检索CGRect。