代码之家  ›  专栏  ›  技术社区  ›  Robert MouzmiSadiq

iPhone:我应该将数据从应用程序包移动到文档目录吗?

  •  0
  • Robert MouzmiSadiq  · 技术社区  · 14 年前

    我注意到,在coredatabooks示例中,如果文件不存在,则会将默认数据库复制到documents目录:

    if (![fileManager fileExistsAtPath:storePath]) {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"CoreDataBooks" ofType:@"sqlite"];
        if (defaultStorePath) {
            [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
        }
    }
    

    我的问题是,这是它所占空间的两倍吗?
    也就是说,现在有两个数据库,一个在bundle中,一个在documents文件夹中。

    我有一个更大的数据库和一大堆图片,总计约50MB。在不复制数据的情况下,还有其他方法可以解决这个问题吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   bddckr    14 年前

    在这个例子中,这样做是为了有一个默认文件可以写入。如果不这样做,就必须用代码创建文件。原因是应用程序包在沙盒中,禁止写入。

    如果需要数据库可编辑,则必须将其移出应用程序包。

        2
  •  1
  •   Seva Alekseyev    14 年前

    阿法克,苹果强烈反对 修改 包中的文件。因此,如果数据是只读的(最有可能是您的图像),就可以将其保存在包中。可变数据库是另一回事。