Ios 设备锁定时无法打开路径处的域

Ios 设备锁定时无法打开路径处的域,ios,objective-c,realm,Ios,Objective C,Realm,在我的应用程序中,我正在对联系人进行后台同步,当设备被锁定时,应用程序崩溃: 由于未捕获的异常“RLMEException”而终止应用程序,原因: “/var/mobile/Containers/Data/Application/FF77C6DA-970E-4FDD-AB69-C10C20607243/Documents/MyApp/default.realm.lock: 无法在路径处打开域 “/var/mobile/Containers/Data/Application/FF77C6DA-97

在我的应用程序中,我正在对联系人进行后台同步,当设备被锁定时,应用程序崩溃:

由于未捕获的异常“RLMEException”而终止应用程序,原因: “/var/mobile/Containers/Data/Application/FF77C6DA-970E-4FDD-AB69-C10C20607243/Documents/MyApp/default.realm.lock: 无法在路径处打开域 “/var/mobile/Containers/Data/Application/FF77C6DA-970E-4FDD-AB69-C10C20607243/Documents/MyApp/default.realm.lock”: open()失败:不允许操作。'

我试过:

创建新文件夹:

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyApp"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:YES attributes:nil error:&error]; //Create folder
然后在此文件夹中创建.realm文件,并将文件保护设置为“无”。以及NSFilePosixPermissions

[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey: NSFileProtectionNone,
                                                    NSFilePosixPermissions : [NSNumber numberWithShort:0777]
                                                    }
                                     ofItemAtPath:[[[RLMRealm defaultRealm]configuration]fileURL].URLByDeletingLastPathComponent.path error:nil];
当设备在同步时被锁定时,应用程序仍然会崩溃


关于如何解决这一问题,有什么想法吗?

在某些情况下(如设备锁定时),使用数据保护会故意干扰访问

默认的保护级别是完全保护,在该级别中,当设备锁定时,文件被加密且不可访问。您可以通过编程方式设置应用程序创建的文件的保护级别,如iOS应用程序编程指南中使用磁盘加密保护数据中所述。对于存储在共享容器中的文件(如配置应用程序组中所述),以编程方式设置保护级别

(来自)

此链接还显示了在您不确定是否已启用数据保护的情况下,在Xcode项目中启用数据保护的位置(特别是目标的权限)


如果你的应用程序需要数据保护的好处,但比全部或全部都不需要更精细,那么你需要深入苹果文档副本中提到的“使用磁盘加密保护数据”部分。

在Xcode目标权限中,你是否启用了数据保护?是的,它打开了!在我关掉它之后,车祸没有发生。谢谢你的信息@bradbrightony不客气。我会在回答中发表评论,这样问题就可以结束了。很高兴它有帮助@Teja Nandamuri在你的场景中,你能解释一下你是如何复制崩溃的吗?我看到了崩溃,但我不知道如何复制它们。你能帮忙吗?有人知道如何复制这个崩溃吗?如果有人能用例子解释他们的崩溃场景,那真的很有帮助。