IPhone FIlewrappers和文件包?

时间:2010-03-03 15:27:15

标签: iphone cocoa-touch iphone-sdk-3.0 nsfilewrapper

假设我有一个模型对象类Box。在我的Box类中,我添加图像引用(png),音频(mp3)等... 不是将它们存储为NSData,而是最好引用文件的路径...以节省内存。

我想归档这个Box类。在桌面上,我们将使用文档包(NSFilewrapper)。但是这个类不是Iphone OS的一部分。

有关归档此类并将所有文件包含为“文档包”的任何建议吗?这类似于Applications作为文件显示的方式,但实际上是一个文件夹...... 谢谢!

1 个答案:

答案 0 :(得分:0)

如果你真的需要在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];

}

可以很容易地修改它以根据您的需要返回文件名等。