2010-03-03 1 views
0

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

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

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

+0

Почему вы хотите сохранить файлы в виде пакета? Пользователь никогда не увидит эти файлы/папки. – kubi

+0

Извините, я не упомянул, что я использую CoreData. Поэтому я предпочитаю хранить все эти ссылки в виде строк. В любом случае пользователь никогда не увидит эти файлы, но они будут загружены и импортированы в клиентское приложение. Так что иметь хороший пакет, который можно застегнуть в молнию и обойти, является одной из моих целей. – sysco

ответ

0

Если вам действительно нужно, чтобы сохранить объекты в коробке, я бы загрузить их в 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]; 

} 

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

+0

Спасибо .... это должно работать красиво! – sysco

 Смежные вопросы

  • Нет связанных вопросов^_^