我知道如何在某些对象中使用NSCoding。
我不喜欢的是:
[NSKeyedArchiver archiveRootObject:self toFile:path]
还将保存其他数据(关于对象的一些东西),除了在其中定义的
- (void)encodeWithCoder:(NSCoder *)aCoder
是否有某种方法只能对象的一个ivar /属性,然后恢复它,而不保存所有其他东西?
我希望你能理解我的问题。
另外,有没有办法加密文件?
我计划以这种方式保持比赛得分(如果有其他更好的方式请说出来)
但我不希望有人可以改变档案,并以这种方式伪造他的分数。
答案 0 :(得分:1)
是的,将其明确写入文件,如数据,文本,JSON格式文本,...
NSKeyedArchiver
需要其他信息,以便它知道要创建的类的类型。如果您不希望保存该信息,则无法使用NSKeyedArchiver
。
一个简单的选项是保存为plist
。 NSDictionary
让这一切变得简单:
NSDictionary *saveDict = @{ @"MyInt" : @( self.intValue ), @"MyBool" : @( self.boolValue ) };
[saveDict writeToFile:... atomically:YES];
但是,这对您要存储的数据类型有限制。 JSON也是如此。