writeToFile 寫(xiě)入失敗問(wèn)題 --->字典去空值

  1. 寫(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,262評(píng)論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,674評(píng)論 1 32
  • 站在前輩的肩膀上前行 UIKit框架和Foundation框架 所有的Mac OS X和IOS程序都是由大量的對(duì)象...
    zysmoon閱讀 8,962評(píng)論 0 16
  • 起因 我們公司的主App在大約17年5月份前后經(jīng)歷了一次大版本迭代,迭代之后更換了若干個(gè)一級(jí)和二級(jí)頁(yè)面,首頁(yè)就在這...
    ac41d8480d04閱讀 12,736評(píng)論 18 240
  • 十、魅力鼓浪嶼 當(dāng)客輪緩緩駛向這個(gè)美麗的小島時(shí),我耳邊又一次響起鄭緒嵐的《鼓浪嶼之波》:“鼓浪嶼四周海茫茫,海水連...
    冰兒藍(lán)閱讀 163評(píng)論 1 1

友情鏈接更多精彩內(nèi)容