我的应用程序涉及用户能够拖动特定项目,例如音量滑块和 UIImage 视图。我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目。不幸的是,我在采用“保存CGRect rect = item.frame
到NSuserDefaults
或NSKeyedArchiver
”路线时看到了错误。还有其他建议吗?
问问题
3264 次
4 回答
18
您可以使用 NSStringFromgCGRect() 和 CGRectFromString() 来存储它们。
于 2010-02-16T03:44:33.413 回答
11
如果您在 iPhone 上使用键控存档,UIKit 特别支持如下所示的附加功能:-encodeCGRect:forKey:
并精确执行您想要的操作。请参阅 Apple 文档了解NSCoder 的 UIKit 添加。
如果您使用的是 NSUserDefaults,则无法为 CGRects 使用显式编码器,但正如其他一些答案所说,您可以将它们保存为字符串使用NSStringFromCGRect()
及其相反。
于 2010-02-16T03:45:53.473 回答
0
您可能会CGRect
使用编码NSData
,然后使用或存储NSData
对象。NSUserDefaults
NSKeyedArchiver
我不确定您在问题中到底指的是什么错误,也许需要更多解释?
于 2010-02-16T03:41:46.533 回答
-4
您必须将 CGRect 中的浮点数转换为 NSNumbers,然后将它们放入字典中。
如果您需要存储大量 CGRect,我建议创建一个轻量级的类,将 CGRect 元素作为可归档的 NSNumber 属性。创建一个采用 CGRect 的初始化程序。然后编写快速的 NSCoder 协议方法,以便可以归档整个对象
这样您就可以快速轻松地转换、存储和检索 CGRects。
于 2010-02-16T03:41:55.260 回答