Używam zabezpieczenie plików przy użyciu NSFileProtectionKey atrybut tak:zabezpieczeń plików gdy urządzenie jest zablokowane i tło sprowadzić w iOS7
[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey : NSFileProtectionComplete} ofItemAtPath:coreDataFilePath error:NULL];
Tak, nie ma pliku w tej ścieżce można otworzyć, gdy urządzenie jest zablokowane hasło. Problem polega na tym, że aplikacje na iOS7 mogą działać w tle, nawet gdy urządzenie jest zablokowane. Kiedy działa jak ten CoreData [NSManagedObjectContext save:]
zakończy się niepowodzeniem z błędem:
NSCocoaErrorDomain, 134030, The operation couldn’t be completed. (Cocoa error 134030.) { NSSQLiteErrorDomain = 23; NSUnderlyingException = "Updating max pk failed: authorization denied"; }
Jak radzić sobie z taką sytuacją?
Jeśli chodzi o "Zapisywanie danych w innym miejscu (przy użyciu NSFileProtectionCompleteNieOpenOpen) do momentu odblokowania urządzenia, a następnie scalenia. Jest to zazwyczaj preferowane podejście". W jaki sposób przechowujesz dane, które mają być zapisane w danych podstawowych, do momentu, aż użytkownik zdecyduje się odłączyć urządzenie. – user3687
Albo wpisując format sieci (często JSON). Lub serializacji obiektów za pomocą NSCoding. W obu przypadkach, zapisując do pliku, aż do odblokowania danych podstawowych. –
Nie zapisywanie pliku raw na dysku stwarza kolejne ryzyko dla bezpieczeństwa aplikacji. W każdym razie masz jakieś sugestie dotyczące sposobu wykrywania, czy podstawowe dane są odblokowane. – user3687