Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS的NSUserDefault中存储自定义对象_Ios - Fatal编程技术网

在iOS的NSUserDefault中存储自定义对象

在iOS的NSUserDefault中存储自定义对象,ios,Ios,我想在NSUserDefaults中存储自定义对象。 我阅读了Apple文档,知道NSUserDefaults只能存储属性列表,例如 NSArray, NSNumber, NSData, NSDate, NSDictionary and NSString. 如果我想存储自定义对象,那么我需要实现NSCoding协议 我需要有人能为下面的课程澄清一点: @interface MyDrawBlock : BlockInfo { CGPoint _blockUpLeft; CASha

我想在NSUserDefaults中存储自定义对象。 我阅读了Apple文档,知道NSUserDefaults只能存储属性列表,例如

NSArray, NSNumber, NSData, NSDate, NSDictionary and NSString.
如果我想存储自定义对象,那么我需要实现NSCoding协议

我需要有人能为下面的课程澄清一点:

@interface MyDrawBlock : BlockInfo
{
    CGPoint _blockUpLeft;
    CAShapeLayer* _shapeLayer;
    int _blockColorFlag;
    int _strokeColorFlag;
}
我班上有CAShapeLayer*\u shaperLayer。 如何在NSUserDefaults中存储MyDrawBlock


如果我实现了NSCoding协议,那么我如何存储CAShapeLayer*_shapeLayer。

尝试使用
NSKeyedArchiver
NSKeyedArchiver

下面看一个类似问题的答案:

你可以;t在NSUserDefualts中存储文件。NSUserDefaults用于存储简单键/数组。这是不重复的。我的目标与给出的答案不同。请仔细阅读我的问题。这看起来像一个问题。退一步,告诉我们你想做什么,以及为什么你认为你需要这样做。通常,如果您试图对视图对象进行编码(在本讨论中,CAShapeLayer是一个视图对象),那么您就做错了。视图对象用于显示内容,而不是保存状态。可能有更好/更合适的方法来完成您试图完成的任务。感谢您的快速重播,但我的类包含CAShapeLayer*\u Shapelayer没有问题,但我不明白您为什么不能对CAShapeLayer进行编码。只需将其编码为对象。谢谢,实际上它对CAShaperLayer@JoobLee,请注意,在用户默认值中存储形状层是一个坏主意。(见我对你问题的评论)