Цель C - Справка NSKeyedArchiver или NSUnKeyedArchiver

Я пытался найти хороший учебник по кодированию набора целых чисел и строк, заключению их в массив, а затем архивации с использованием архиватора NSKeyed или NSUnkeyed (в конечном итоге для помещения в объект NSData и передачи его по Wi-Fi). Фи).

Например, у меня есть 3 целых числа и 3 строки, называемые

int1 int2 int3 строка1 строка2 строка3

Может ли кто-нибудь предоставить мне пример кода или ссылку на хороший учебник, который содержит примеры того, как это сделать? Включая метод, с помощью которого мне нужно кодировать все мои объекты, поскольку я все еще не уверен, как это достигается, когда я также пытаюсь обернуть эти закодированные элементы в массив, а затем заархивировать их.

Я прочитал Руководство по программированию архивов и сериализаций на веб-сайте Apple, и это не очень понятно, если рассматривать его в контексте попытки обернуть все это в массив, а затем заархивировать.

Если бы мне не нужно было также передавать строки, у меня возникло бы искушение просто создать пакет CFSwappedFloat32 в стиле GKRocket, но строки довольно неотъемлемы.

Спасибо


person Ian    schedule 27.04.2011    source источник
comment
возможный дубликат Как сохранить мой собственный объект с помощью NSKeyedArchiver??   -  person Caleb    schedule 27.04.2011


Ответы (1)


Не могли бы вы уточнить, где у вас возникли проблемы? Все, что вам нужно сделать, это создать объект данных и архиватор, а затем начать архивировать вещи. Вызовите -finishEncoding, когда закончите.

Давайте закодируем некоторую информацию о банковском счете:

const NSString *AccountHolderKey = @"account_holder";
const NSString *AccountNumberKey = @"account_number";
const NSString *AccountBalanceKey = @"account_balance";

//...

NSString *accountHolder = @"Johnny Appleseed";
int accountNumber = 12345;
int balance = 1250;

NSMutableData *archivedData = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

[archiver encodeObject:accountHolder forKey:AccountHolderKey];
[archiver encodeInt:accountNumber forKey:AccountNumberKey];
[archiver encodeInt:balance forKey:AccountBalanceKey];

[archiver finishEncoding];
[archiver release];

// now you can do what you like with archivedData
person Caleb    schedule 27.04.2011
comment
Спасибо за это, я сильно перечитал все, что связано с декодированием и кодированием. Так просто, когда у тебя есть такой пример. - person Ian; 28.04.2011
comment
Рад помочь. Обратите внимание, что у Apple есть очень похожий пример в Создание архива. Основное отличие состоит в том, что их пример не демонстрирует -encodeInt:. - person Caleb; 28.04.2011