Parse iOS SDK 上 PFFile.getData() 的 NSFileProtection 级别是多少?
What is the NSFileProtection level for PFFile.getData() on Parse iOS SDK?
应用程序似乎很少崩溃,一位 Apple 工程师建议,原因可能是如果用户在创建 NSData 对象和应用程序尝试读取第一个对象之间锁定他们的设备,就会发生崩溃来自该 NSData 对象的字节。
这意味着 Parse 是 downloading/storing 具有 'Complete' 数据保护级别 (NSFileProtectionComplete) 的文件。
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
}
Parse iOS SDK好像使用了NSFileProtectionCompleteUntilFirstUserAuthentication
,允许设备启动后第一个用户authentication/unlock之后的文件访问。
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
所以我假设同步 PFFile.getData()
使用 NSFileProtectionCompleteUntilFirstUserAuthentication
是对的吗?或者它根本不使用文件保护,因为数据被加载到内存中,根本没有写入文件?
在深入研究 Parse iOS SDK 之后,我可以回答这个问题:
同步(与异步一样)文件获取将数据保存在一个临时文件中 NSFileManager
和 NSFileProtectionCompleteUntilFirstUserAuthentication
。
应用程序似乎很少崩溃,一位 Apple 工程师建议,原因可能是如果用户在创建 NSData 对象和应用程序尝试读取第一个对象之间锁定他们的设备,就会发生崩溃来自该 NSData 对象的字节。
这意味着 Parse 是 downloading/storing 具有 'Complete' 数据保护级别 (NSFileProtectionComplete) 的文件。
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
}
Parse iOS SDK好像使用了NSFileProtectionCompleteUntilFirstUserAuthentication
,允许设备启动后第一个用户authentication/unlock之后的文件访问。
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
所以我假设同步 PFFile.getData()
使用 NSFileProtectionCompleteUntilFirstUserAuthentication
是对的吗?或者它根本不使用文件保护,因为数据被加载到内存中,根本没有写入文件?
在深入研究 Parse iOS SDK 之后,我可以回答这个问题:
同步(与异步一样)文件获取将数据保存在一个临时文件中 NSFileManager
和 NSFileProtectionCompleteUntilFirstUserAuthentication
。