Eine App scheint sehr selten zu stürzen, ein Apple Engineer schlug vor, dass der Absturz geschieht, wenn der Benutzer sein Gerät zwischen dem Zeitpunkt der Erstellung des NSData-Objekts und dem Versuch, das erste Byte zu lesen, sperrt NSData-ObjektWie lautet die NSFileProtection-Stufe für PFFile.getData() beim Parse iOS SDK?
Dies würde bedeuten, dass Parse eine Datei mit der Datenschutzstufe "Complete" (NSFileProtectionComplete) herunterlädt/speichert.
let query = PFQuery(className: aClass)
let result = try query.getFirstObject()
guard
let imageObject = result.objectForKey(aKey) as? PFFile,
let imageData = try? imageObject.getData(),
let firstByte = imageData.dataType() // this reads the 1st byte of data
else {
return
}
Die Parse iOS SDK scheint NSFileProtectionCompleteUntilFirstUserAuthentication
zu verwenden, die den Dateizugriff nach der ersten Benutzerauthentifizierung ermöglicht/entriegeln, nachdem die Vorrichtung gestartet wurde.
static NSDictionary *_PFFileManagerDefaultDirectoryFileAttributes() {
#if !PF_TARGET_OS_OSX
return @{ NSFileProtectionKey : NSFileProtectionCompleteUntilFirstUserAuthentication };
#else
return nil;
#endif
}
static NSDataWritingOptions _PFFileManagerDefaultDataWritingOptions() {
NSDataWritingOptions options = NSDataWritingAtomic;
#if !PF_TARGET_OS_OSX
options |= NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication;
#endif
return options;
}
@interface PFFileManager()
@property (nonatomic, copy) NSString *applicationIdentifier;
@property (nonatomic, copy) NSString *applicationGroupIdentifier;
@end
@implementation PFFileManager
So bin ich recht in der Annahme, dass die synchrone PFFile.getData()
NSFileProtectionCompleteUntilFirstUserAuthentication
verwendet? Oder verwendet es überhaupt keinen Dateischutz, weil die Daten in den Speicher geladen und überhaupt nicht in eine Datei geschrieben werden?