8

我的应用程序涉及用户能够拖动特定项目,例如音量滑块和 UIImage 视图。我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目。不幸的是,我在采用“保存CGRect rect = item.frameNSuserDefaultsNSKeyedArchiver”路线时看到了错误。还有其他建议吗?

4

4 回答 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对象。NSUserDefaultsNSKeyedArchiver

我不确定您在问题中到底指的是什么错误,也许需要更多解释?

于 2010-02-16T03:41:46.533 回答
-4

您必须将 CGRect 中的浮点数转换为 NSNumbers,然后将它们放入字典中。

如果您需要存储大量 CGRect,我建议创建一个轻量级的类,将 CGRect 元素作为可归档的 NSNumber 属性。创建一个采用 CGRect 的初始化程序。然后编写快速的 NSCoder 协议方法,以便可以归档整个对象

这样您就可以快速轻松地转换、存储和检索 CGRects。

于 2010-02-16T03:41:55.260 回答