2016-06-24 25 views
0

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?

Antwort

0

Nach weiteren Graben in das Parse iOS SDK ich die Frage beantworten kann:

Synchron (wie asynchron) Datei Abrufen speichert die Daten in einer temporären Datei mit NSFileManager und NSFileProtectionCompleteUntilFirstUserAuthentication.