我使用这个辅助类:Secure-NSUserDefaults的NSDictionary:validationhash无法验证(安全-NSUserDefaults的)
我运行到其中validationhash从存储的哈希不同的NSDictionary中,当我修改的问题后者并尝试再次保存。
这里是我的代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL valid = NO;
NSDictionary * modDict = [defaults secureDictionaryForKey:aKey valid:&valid];
if (!valid) {
//handle
}
for (NSString * modKey in modDict) {
NSMutableArray * modArray = [[modDict objectForKey:modKey] mutableCopy];
NSString * newValue = @"newValue";
[modArray replaceObjectAtIndex:0 withObject:newValue];
NSMutableDictionary *newModDict = [modDict mutableCopy];
[newModDict setObject:modArray forKey:modKey];
[defaults setSecureObject:newModDict forKey:aKey];
[defaults synchronize];
}
当我运行这段代码一次,杀应用程序,并再次启动它,所有的作品,因为它应该和validationhash匹配。事实上,它在第一次运行时始终匹配正确。换句话说:我的代码保存了安全字典和散列匹配的后续应用程序运行很好(一次)。
但是 - 如果我不杀运行之间的应用程序运行相同的代码第二次,该validationhash是不同的,而&有效检查失败。
我能跟踪下来的问题这一行:
[newModDict setObject:modArray forKey:modKey];
如果我评论它,它工作正常,所有的时间,但随后的过程中,修改我试图让ISN”完全没有,我简单地复制字典“原样”。
我努力弄清楚我做错了什么,或者如何修改和重新保存NSDictionary,以便散列匹配。
在此先感谢您的帮助!