获取卷加密状态问题:FV2加密检测代码始终返回true
问题排查:判断卷加密状态时始终返回True的问题
嘿,我来帮你搞定这个困扰!你遇到的问题是不管卷实际是否加密,代码都返回TRUE,这背后其实是对getResourceValue:forKey:error:返回值的理解偏差。
问题根源
你现在直接用if (volType)做判断,但NSURLVolumeIsEncryptedKey对应的返回值是NSNumber类型的对象——哪怕它包装的是NO,这个对象本身也是非空的,所以if (volType)的条件永远会成立,自然不管什么情况都返回TRUE了。
修正后的代码
你需要提取NSNumber里的实际布尔值来判断,同时别忘了先检查资源值是否获取成功,避免错误场景下的意外:
NSNumber *volType; NSError *error = nil; BOOL encrypted = NO; // 先确认资源值获取操作成功 if ([url getResourceValue:&volType forKey:NSURLVolumeIsEncryptedKey error:&error]) { // 提取NSNumber中的布尔值作为判断依据 encrypted = [volType boolValue]; } else { // 处理获取失败的情况,比如打印错误信息 NSLog(@"获取卷加密状态失败: %@", error.localizedDescription); }
补充说明
NSURLVolumeIsEncryptedKey本身就能准确标识卷是否通过FileVault 2加密,只要修正判断逻辑,就能得到正确的加密状态啦。
内容的提问来源于stack exchange,提问作者jbrown94305
相关产品推荐
相关产品推荐

