我使用這個輔助類: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,以便散列匹配。
在此先感謝您的幫助!