NSCoding - повторно использовать объект для записи? - PullRequest
1 голос
/ 30 марта 2012

У меня есть Singleton, у которого есть NSMutableArray, содержащий класс, класс содержит надлежащие процедуры NSCoding для кодирования / декодирования данных - все это прекрасно работает.

Однако теперь я хотел бы также сохранить данныеэто не является частью класса (массива), но вместо этого является частью 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'

Что я делаю не так и как я могу это исправить?

1 Ответ

3 голосов
/ 30 марта 2012

Ваша ошибка в том, что globDat.alarmIsOn это бул и

NSKeyedArchiver archivedDataWithRootObject:

хочет

id

- другое слово для непрозрачного указателя на объект. Bool - это просто байт. Как именно вы хотите исправить это зависит от вас. Для использования этой процедуры требуется объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...