如何在iOS中归档对象的ivar /属性

时间:2014-04-03 09:46:09

标签: ios objective-c cocoa-touch

我知道如何在某些对象中使​​用NSCoding。

我不喜欢的是:
[NSKeyedArchiver archiveRootObject:self toFile:path]

还将保存其他数据(关于对象的一些东西),除了在其中定义的     - (void)encodeWithCoder:(NSCoder *)aCoder

是否有某种方法只能对象的一个​​ivar /属性,然后恢复它,而不保存所有其他东西?

我希望你能理解我的问题。

另外,有没有办法加密文件?
我计划以这种方式保持比赛得分(如果有其他更好的方式请说出来) 但我不希望有人可以改变档案,并以这种方式伪造他的分数。

1 个答案:

答案 0 :(得分:1)

是的,将其明确写入文件,如数据,文本,JSON格式文本,...

NSKeyedArchiver需要其他信息,以便它知道要创建的类的类型。如果您不希望保存该信息,则无法使用NSKeyedArchiver

一个简单的选项是保存为plistNSDictionary让这一切变得简单:

NSDictionary *saveDict = @{ @"MyInt" : @( self.intValue ), @"MyBool" : @( self.boolValue ) };
[saveDict writeToFile:... atomically:YES];

但是,这对您要存储的数据类型有限制。 JSON也是如此。