- 寫(xiě)入的必須是NSString,NSDate,NSArray,NSDictionary等基本數(shù)據(jù)類型
2.寫(xiě)入的數(shù)據(jù)不能為自定義類型或者Null (服務(wù)器返回的字典里,有個(gè)鍵對(duì)應(yīng)的值為Null,搞了半天寫(xiě)不進(jìn)去)
單層字典
- (void)saveUserInfoWithDictionary:(NSDictionary *)dict{
// 去除空值
NSMutableDictionary *dic = dict.mutableCopy;
for (NSString * key in dic.allKeys) {
id value = [dic valueForKey:key];
if (value == nil || [value isKindOfClass:[NSNull class]]) {
value = @"";
[dic setValue:value forKey:key];
}
}
// 保存本地
if ([dic writeToFile:kUserInfoPath atomically:YES]) {
NSLog(@"保存用戶信息成功");
}
}
多層字典
如果字典是多層的, 既字典里面包含字典,或者字典里包含數(shù)組,數(shù)組里又是字典,可以寫(xiě)個(gè)遞歸
@implementation NSDictionary (Extension)
// 會(huì)遍歷每一個(gè)鍵值對(duì), 建議讓后臺(tái)的小伙伴盡量別返回null
- (NSDictionary *)removeNull{
// 去除空值
NSMutableDictionary *dic = self.mutableCopy;
for (NSString * key in dic.allKeys) {
id value = [dic valueForKey:key];
// 字典里包含字典
if ([value isKindOfClass:[NSDictionary class]]) {
value = [value removeNull];
[dic setValue:value forKey:key];
}
// 如果是數(shù)組
else if ([value isKindOfClass:[NSArray class]]) {
NSMutableArray *array = [value mutableCopy];
for (int i= 0; i<array.count; i++) {
// 數(shù)組里包含字典
if ([array[i] isKindOfClass:[NSDictionary class]]) {
NSDictionary *dic = array[i];
dic = [dic removeNull];
[array replaceObjectAtIndex:i withObject:dic];
}
// 如果是空
else if (array[i] == nil || [array[i] isKindOfClass:[NSNull class]]) {
[array replaceObjectAtIndex:i withObject:@""];
}
}
[dic setValue:array forKey:key];
}
//
else if (value == nil || [value isKindOfClass:[NSNull class]]) {
value = @"";
[dic setValue:value forKey:key];
}
}
return dic;
}
@end
作者:請(qǐng)不要叫我呆頭鵝
來(lái)源:CSDN
原文:https://blog.csdn.net/lg767201403/article/details/71485641