Ios 正在查找在CoreData管理的持久存储上禁用备份的位置

Ios 正在查找在CoreData管理的持久存储上禁用备份的位置,ios,objective-c,core-data,appstore-approval,Ios,Objective C,Core Data,Appstore Approval,我已经找到了将扩展属性应用于DB文件所需的代码,但是我在确定何时应用该属性时遇到了一个问题。我找到的信息表明,尝试在文件存在之前的某个点设置属性将确保在应用程序重新启动(并再次点击代码)之前设置不会生效,但是我不确定是否可以在DB打开时设置标记,也不确定在何处,具体来说,该文件保证在persistentStoreCoordinator中打开。我使用的是为CoreData应用程序生成的标准方法结构(最初包含在AppDelegate中,只是移动到了一个单独的类,以便更容易地支持多个db): 我知道我

我已经找到了将扩展属性应用于DB文件所需的代码,但是我在确定何时应用该属性时遇到了一个问题。我找到的信息表明,尝试在文件存在之前的某个点设置属性将确保在应用程序重新启动(并再次点击代码)之前设置不会生效,但是我不确定是否可以在DB打开时设置标记,也不确定在何处,具体来说,该文件保证在
persistentStoreCoordinator
中打开。我使用的是为CoreData应用程序生成的标准方法结构(最初包含在
AppDelegate
中,只是移动到了一个单独的类,以便更容易地支持多个db):


我知道我必须在
\u storeURL
上调用
addskipbackupattributetoitemature
(来自Apple示例代码),但我的想法是否正确,我还必须识别默认情况下在SQL db上创建的额外文件(或在db上关闭WAL)。此外,我不确定何时需要调用它以确保在第一次运行时正确标记该文件。首先,我是否保证存储文件将在该方法中返回之前全部存在,或者在使用它们之前,或者在创建托管对象上下文之后,它们中的任何一个都不会被创建,你可以把你不想要的东西备份到一个文件夹中,然后用<代码>文件夹AdkSkIPoupUpTeTeTimeTATURLUR< <代码>标记,这样你就不必为创建的新文件做这件事了。我确实考虑过了,但它只是需要跳过的一个DB。这样做将意味着两个活动数据库将位于不同的区域-这不是一个问题,但这样我也只需要更改DB控制对象的标志来进行更改,而不必记住在重用此系统时将DB重新设置到另一个位置。基本上,我更喜欢一次解决问题,而不是每次都记得管理和协调单独的空间
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (_persistentStoreCoordinator != nil) return _persistentStoreCoordinator;
    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:_storeURL options:nil error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    return _persistentStoreCoordinator;
}