IPhone FIlewrappers и пакеты документов? - PullRequest
0 голосов
/ 03 марта 2010

Предположим, у меня есть класс объектов модели Box. В моем классе Box я добавляю ссылки на изображения (png), аудио (mp3) и т. Д. Вместо того, чтобы хранить их как NSData, кажется, лучше ссылаться на пути к файлам ... для экономии памяти.

Я бы хотел заархивировать этот класс Box. На рабочем столе мы будем использовать Пакеты документов (NSFilewrapper). Но этот класс не является частью операционной системы Iphone.

Есть предложения по архивированию этого класса и включению всех файлов в «пакет документов»? Это похоже на то, как приложения отображаются в виде файла, но на самом деле это папка ... Спасибо!

1 Ответ

0 голосов
/ 03 марта 2010

Если вам действительно нужно сохранить объекты в Box, я бы загрузил их в NSDictionary и записал это:

Примечание: это непроверенный / непроизводственный код, предназначенный только для отправной точки.

- (BOOL)saveBox:(Box*)aBox;
{
    NSMutableDictionary *boxDict = [NSMutableDictionary dictionaryWithCapacity:10];

    // Add contents of box to dictionary (exercise left up to original poster)

    // boxDict is now populated

    // write dictionary to apps document directory.
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
        return NO;
    }

    // Assumes Box class has name property
    NSString *outputFile = [documentsDirectory stringByAppendingPathComponent:[aBox name]];

    return [boxDict writeToFile:outputFile atomically:YES];

}

Это можно легко изменить, чтобы вернуть имя файла и т. Д. В зависимости от ваших потребностей.

...