如何在 NSUserDefaults 中存储 UILabel 的 NSMutableArray
How to store NSMutableArray of UILabel in NSUserDefaults
在我的应用程序中,用户可以添加标签并旋转和移动标签的位置。并且添加标签是通过编程方式单击添加标签以编程方式将标签添加到视图中。现在我想实现撤消和重做功能。所以我将标签存储在 NSArray
中。我想如果我将标签存储在数组中,然后使用键将数组存储在 NSUserDefaults
中,当用户单击“撤消”时,我会从视图中删除所有标签并从我存储但标签在 NSMutableArray
中的数组中添加标签但它不存储在 NSUserDefaults
.
NSData *lbldata = [NSKeyedArchiver archivedDataWithRootObject:labels];
[[NSUserDefaults standardUserDefaults] setObject:lbldata forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]];
我尝试像
这样的 simpla 数组
[[NSUserDefaults standardUserDefaults] setObject:labels forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]];
但它给我错误。
在上面的代码标签中是NSMutableArray
。欢迎任何建议。谢谢你的时间祝你有美好的一天。
您的目标是让用户拥有您所说的 undo/redo。有一个名为 NSUndoManager
的完整系统。您应该仔细阅读它的文档,而不是试图对 NSUserDefaults
非预期的东西进行陪审:
https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/UndoManager.html
此外,NSUserDefaults
不是存储完整 UI 对象类型的好地方。相反,如果你想存储一些关于 UI 元素的条件以便在你下次打开应用程序时以相同的方式重新显示它,那么你可以只存储你需要保存的条件。例如,也许您存储了与 UILabel
的 text
属性 相关联的 NSString
并且存储了与其位置相关联的 CGPoint
和 NSNumber
与其旋转角度等关联
但是undo/redo请不要使用NSUserDefaults
。
您可以获得UILabel的重要属性,例如NSDictionary
-框架、字符串、颜色等
然后使用以下选项之一来 store/delete/update 标签:
- 使用 sqlite 存储属性。
- 使用 CoreData 存储属性。
- 将属性写入 .plist 文件
- 将 NSDictionary 存储到 NSUserDefaults
在我的应用程序中,用户可以添加标签并旋转和移动标签的位置。并且添加标签是通过编程方式单击添加标签以编程方式将标签添加到视图中。现在我想实现撤消和重做功能。所以我将标签存储在 NSArray
中。我想如果我将标签存储在数组中,然后使用键将数组存储在 NSUserDefaults
中,当用户单击“撤消”时,我会从视图中删除所有标签并从我存储但标签在 NSMutableArray
中的数组中添加标签但它不存储在 NSUserDefaults
.
NSData *lbldata = [NSKeyedArchiver archivedDataWithRootObject:labels];
[[NSUserDefaults standardUserDefaults] setObject:lbldata forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]];
我尝试像
这样的 simpla 数组[[NSUserDefaults standardUserDefaults] setObject:labels forKey:[NSString stringWithFormat:@"customLabel%i",UndoKey]];
但它给我错误。
在上面的代码标签中是NSMutableArray
。欢迎任何建议。谢谢你的时间祝你有美好的一天。
您的目标是让用户拥有您所说的 undo/redo。有一个名为 NSUndoManager
的完整系统。您应该仔细阅读它的文档,而不是试图对 NSUserDefaults
非预期的东西进行陪审:
https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/UndoManager.html
此外,NSUserDefaults
不是存储完整 UI 对象类型的好地方。相反,如果你想存储一些关于 UI 元素的条件以便在你下次打开应用程序时以相同的方式重新显示它,那么你可以只存储你需要保存的条件。例如,也许您存储了与 UILabel
的 text
属性 相关联的 NSString
并且存储了与其位置相关联的 CGPoint
和 NSNumber
与其旋转角度等关联
但是undo/redo请不要使用NSUserDefaults
。
您可以获得UILabel的重要属性,例如NSDictionary
-框架、字符串、颜色等
然后使用以下选项之一来 store/delete/update 标签:
- 使用 sqlite 存储属性。
- 使用 CoreData 存储属性。
- 将属性写入 .plist 文件
- 将 NSDictionary 存储到 NSUserDefaults