IPhone文件包装器和文档包?

IPhone文件包装器和文档包?,iphone,cocoa-touch,iphone-sdk-3.0,nsfilewrapper,Iphone,Cocoa Touch,Iphone Sdk 3.0,Nsfilewrapper,假设我有一个模型对象类框。在我的Box类中,我添加了图像引用(png)、音频(mp3)等。。。 与其将它们存储为NSData,不如引用文件的路径……以节省内存 我想归档这个盒子类。在桌面上,我们将使用文档包(NSFilewrapper)。但是这个类不是Iphone操作系统的一部分 对归档此类文件并将所有文件作为“文档包”包含有任何建议吗?这与应用程序显示为文件的方式类似,但实际上是一个文件夹。。。 谢谢 如果您确实需要将对象保存在框中,我会将它们加载到NSDictionary中,并写出: 注意:

假设我有一个模型对象类框。在我的Box类中,我添加了图像引用(png)、音频(mp3)等。。。 与其将它们存储为NSData,不如引用文件的路径……以节省内存

我想归档这个盒子类。在桌面上,我们将使用文档包(NSFilewrapper)。但是这个类不是Iphone操作系统的一部分

对归档此类文件并将所有文件作为“文档包”包含有任何建议吗?这与应用程序显示为文件的方式类似,但实际上是一个文件夹。。。
谢谢

如果您确实需要将对象保存在框中,我会将它们加载到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];

}

可以根据您的需要轻松修改此选项以返回文件名等。

为什么要将文件存储为捆绑包?用户将永远看不到这些文件/文件夹。对不起,我没有提到我正在使用CoreData。所以我更喜欢将所有这些引用存储为字符串。无论如何,用户将永远不会看到这些文件,但它们将被下载并导入到客户端应用程序。所以我的目标之一就是拥有一个可以压缩和传递的好包。