Parse iOS SDK上pffile.getData()的NSFileProtection级别是多少



一个应用似乎很少崩溃,苹果工程师建议原因是,如果用户在创建NSDATA对象的时间和何时,则可能发生崩溃应用程序尝试读取该nsdata对象的第一个字节。

这意味着Parse正在下载/存储使用"完整"数据保护级别(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,允许在启动设备后第一个用户身份验证/解锁后允许文件访问。

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是正确的吗?还是由于数据加载到内存而根本不写入文件而根本不使用文件保护?

进一步挖掘解析iOS SDK后,我可以回答以下问题:

同步(类似于异步)文件获取使用NSFileManagerNSFileProtectionCompleteUntilFirstUserAuthentication

将数据保存在临时文件中

相关内容

  • 没有找到相关文章

最新更新