objective-c - 如何正确初始化 RestKit 的 objectStore 以使用文档以外的目录

标签 objective-c ios rest core-data restkit

所以我看到RestKit的引用中有一个init方法:objectStoreWithStoreFilename:inDirectory:usingSeedDatabaseName:managedObjectModel:delegate它假设初始化指定目录中的objectStore。 “inDirectory”参数接受 NSString。我尝试过@“Library/Caches”和[self.applicationCachesDirectory AbsoluteURL],其中self.applicationCachesDirectory返回Caches目录的URL,但我遇到了异常。

请告诉我如何在此方法中指定“Library/Caches”,以便将 sqlite DB 保存在 Caches 目录而不是文档中?

最佳答案

成功了。我创建了辅助方法来获取 NSString 形式的缓存文件夹路径

    - (NSString *)applicationCachesDirectoryString
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [paths objectAtIndex:0];
    BOOL isDir = NO;
    NSError *error;
    if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
        [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
    }
    return cachePath;
}

然后将其传递给objectStore init方法:

self.objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName inDirectory:[self applicationCachesDirectoryString] usingSeedDatabaseName:seedDatabaseName managedObjectModel:managedObjectModel delegate:self];

关于objective-c - 如何正确初始化 RestKit 的 objectStore 以使用文档以外的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218334/

相关文章:

iphone - 键值观察和 NSTimer

javascript - 在 Firebase 的不同节点中写入多个对象

python - Django REST 框架 : nested relationship: non_field_errors

android - 为 Android 应用程序创建登录

iphone - 从具有多对多关系核心数据 iOS 的上下文中删除 nsmanagedobject

c++ - 使用 C++/Obj-C 创建小部件?

iphone - 调试 NSNotificationCenter 问题的方法?

ios - AFNetworking 3 - 如何初始化 NSProgress

ios - 在我的 iOS 应用程序的本地通知中实现振动和声音设置

ios - 将 Set<CustomObject> 存储到 UserDefaults