iOS NSUserDefaults setObject forKey,本地化儲存,刪除字典中的null,空值,本地化的時候,如果value為空值所引起的崩潰
阿新 • • 發佈:2019-02-09
刪除字典中的null
我們在處理伺服器傳過來的資料過程中,如果資料中出現null,我們是沒法進行本地持久化處理的。在使用NSUserDaults
儲存本地時,如果其中一個欄位的value為NULL值,就會出現崩潰。
null產生原因
null是後臺在處理資料的時候,如果沒有設定預設的value
值,資料庫預設填充的值,就為null值,從伺服器傳過來,我們json
or xml解析成null值。
解決辦法
- 伺服器端做好處理,讓所有的欄位對應都有預設的不為空的值
- 本地做刪除null處理
本地做刪除null處理
如果是資料庫做處理的話,可以在資料庫中,將未設定的value
填充為" "即可。
如果是本地處理的話,我個人是通過新增類別
程式碼如下:
//
// NSDictionary+MyDictionary.h
// Plus2
//
// Created by 張國榮 on 16/2/24.
// Copyright © 2016年 zgr. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDictionary (MyDictionary)
-(NSDictionary *)deleteAllNullValue;
@end
// // NSDictionary+MyDictionary.m // Plus2 // // Created by 張國榮 on 16/2/24. // Copyright © 2016年 zgr. All rights reserved. // #import "NSDictionary+MyDictionary.h" @implementation NSDictionary (MyDictionary) - (NSDictionary *)deleteAllNullValue{ NSMutableDictionary *mutableDic = [[NSMutableDictionary alloc] init]; for (NSString *keyStr in self.allKeys) { if ([[self objectForKey:keyStr] isEqual:[NSNull null]]) { [mutableDic setObject:@"" forKey:keyStr]; } else{ [mutableDic setObject:[self objectForKey:keyStr] forKey:keyStr]; } } return mutableDic; } @end