NSFileProtectionCompleteUnlessOpen在iOS 13中是否不同?

时间:2019-10-15 06:02:38

标签: ios core-data core-location ios13

NSFileProtectionCompleteUnlessOpen Doc

如果文件在解锁时打开,即使用户锁定了设备,您也可以继续正常访问该文件。

在iOS 13中,如果用户锁定设备,则App无法在后台模式下执行[NSManagedObjectContext save:]。它将导致后台崩溃。 (背景模式:位置更新)

我认为问题是位置更新引起的,这是一个错误的猜测。我尝试了beginBackgroundTask,NSRunLoop mainRunLoop,NSTimer ScheduledTimer。

初始化代码:

_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         NSFileProtectionCompleteUnlessOpen, NSPersistentStoreFileProtectionKey,
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
}

保存代码:

- (void) save {
    id delegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *context = [delegate managedObjectContext];
    [context performBlockAndWait:^{
        [context save:nil];
    }];
}

TestFlight崩溃日志提及以下内容: NSSQLSavePlan,NSSQLCore,NSPersistentStoreCoordinator,NSManagedObjectContext

当前,我更改为NSFileProtectionCompleteUntilFirstUserAuthentication来避免此问题。

0 个答案:

没有答案