原文鏈接:
使用NSKeyedArchiver壓縮對象成二進制數據,再使用NSKeyedUnarchiver解壓二進制數據,如果解壓時數據爲nil,或者數據中有異常的數據,那麼解壓將會出錯,甚至會導致程序crash掉。可以用這種方法防止程序crash:
NSData *data=[[NSUserDefaults standardUserDefaults] valueForKey:key];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
if (data) {
@try {
dict=[NSKeyedUnarchiver unarchiveObjectWithData:data];
return dict;
}
@catch (NSException *exception) {
return dict;
}
@finally {
}
}
return dict;