iphone - 将 coredata 文件存储在文档目录之外?

标签 iphone objective-c core-data

我允许在我的应用程序中共享itunes,但我注意到coredata在文档目录中创建sqlite

我可以将此文件的保存更改为库吗,如果可以,如何更改

最诚挚的问候

最佳答案

这是可能的。我制作了一个小辅助方法,它创建了一条无法通过 iTunes 访问的路径。数据库将存储在库目录中,该目录包含在itunes备份中。

- (NSString *)applicationPrivateDocumentsDirectory {
    static NSString *path;
    if (!path) {
        NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
        path = [libraryPath stringByAppendingPathComponent:@"Private Documents"];
        BOOL isDirectory;
        if (![[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory]) {
            NSError *error = nil;
            if (![[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]) {
                NSLog(@"Can't create directory %@ [%@]", path, error);
                abort(); // replace with proper error handling
            }
        }
        else if (!isDirectory) {
            NSLog(@"Path %@ exists but is no directory", path);
            abort(); // replace with error handling
        }
    }
    return path;
} 

然后你会替换

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"SomeApp.sqlite"];

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 方法中:

NSURL *storeURL = [NSURL fileURLWithPath:[[self applicationPrivateDocumentsDirectory] stringByAppendingPathComponent:@"SomeApp.sqlite"]];

关于iphone - 将 coredata 文件存储在文档目录之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5243917/

相关文章:

iphone - 删除XCode中针对不同目标的代码链接-iAds

iphone - 隐藏导航栏的标题

ios - 将二进制数据对象迁移到核心数据实体

iphone - 应用程序 :didFinishLaunchingWithOptions: memory management

iphone - 如何调用performSelectorOnMainThread : with an selector that takes > 1 arguments?

objective-c - RaptureXML 奇怪的行为

objective-c - 核心数据和 NSTableView 绑定(bind)

ios - 如何将单元格添加到 UITableView 部分并保存核心数据信息

ios - 使用来自 NSDictionaries 的 NSArray 的谓词创建 NSSet

iphone - 将手机的照片复制到应用程序的目录