NSKeyedArchiver и NSValue - Как архивировать? - PullRequest
1 голос
/ 25 апреля 2010

Как мне заархивировать массив NSValues? Какие преобразования я должен сделать, чтобы сделать это? Он не будет архивировать как есть.

Код:

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver 
archivedDataWithRootObject:[[NSArray alloc] initWithArray:drawingsArray]] 
forKey:@"NSValuesArray"];

Ошибка:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs'

Данные массива:

drawingsArray (
    (
    NSPoint: {439, 280},
    NSPoint: {439, 280},
    NSPoint: {439, 287},
    NSPoint: {438.62, 290.104},
    NSPoint: {439, 293}
)

)

1 Ответ

1 голос
/ 25 апреля 2010

Вам не нужно использовать NSKeyedArchiver. Вместо этого просто скажите [[NSUserDefaults standardUserDefaults] setObject:valueArray forKey:@"valueArray"]. Архивирование будет выполнено автоматически. Посмотрите, работает ли это.

РЕДАКТИРОВАТЬ: Я думаю, ваша конкретная проблема использует archivedDataWithRootObject:. Вам не нужно это использовать, поскольку NSArray соответствует NSCoder - дочерние объекты также будут автоматически архивироваться.

...