我有一个Singleton,它有一个包含Class的NSMutableArray,Class包含正确的NSCoding例程来编码/解码数据 - 它一切正常。
但是我现在也希望保存不属于Class(数组)的数据,而是Singleton的一部分,并不是特定于Class / array中的每个项目。所以我在Singleton中添加了相应的代码,包括:
BOOL alarmIsOn;
...
@property(nonatomic,assign) BOOL alarmIsOn;
...
@synthesize alarmIsOn;
...
[encoder encodeBool:alarmIsOn forKey:@"alarmison"];
...
alarmIsOn=[decoder decodeBoolForKey:@"alarmison"];
当我保存我的数据时,我之前使用过的,这完全有效:
GlobalData *globDat=[GlobalData getSingleton];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:globDat.allMsgs];
[encodedObject writeToFile:plistPath atomically:YES];
现在我想添加以下内容以包含Singleton中的其他数据:
encodedObject = [NSKeyedArchiver archivedDataWithRootObject:globDat.alarmIsOn];
[encodedObject writeToFile:plistPath atomically:YES];
然而它在Xcode中给了我这个错误:
Automatic Reference Counting Issue: Implicit conversion of 'BOOL' (aka 'signed char') to 'id' is disallowed with ARC
这个警告:
Semantic Issue: Incompatible integer to pointer conversion sending 'BOOL' (aka 'signed char') to parameter of type 'id'
我做错了什么,我该如何解决这个问题?
答案 0 :(得分:3)
你的错误就是这样 globDat.alarmIsOn 是一个布尔和
NSKeyedArchiver archivedDataWithRootObject:
想要一个
id
这是指向对象的不透明指针的另一个词。布尔只是一个字节。你究竟想要修复它取决于你。要使用该例程,需要一个对象。