2015-09-22 42 views
1

我正在從一個web服務檢索密集的多層業務對象的應用程序。我在Obj C創建了表示Web服務對象並正確映射Web服務對象的類(即:用戶對象,後對象,組對象)JSON,Obj C,安全和空檢查

現在我將數據作爲json返回,對於某些數據點,響應返回數據的某些部分爲空,或者對象的某些部分不存在(就像沒有姓氏的用戶對象)。當然,我會開始檢查,如果

JSONRESPONSE 

先後爲姓名值,然後姓氏,然後城市,等等,等等

顯然是有很多在這個冗餘的,我不;噸想一遍又一遍地寫同樣的檢查,但想到我有一個實用程序類中的類方法。

任何人對此有想法?最佳做法是什麼?

謝謝。

+0

你是如何解析這個JSON這種方法嗎?在解析的文檔對象模型中如何表示空值? – trojanfoe

回答

0

處理它的一種方法是讓你的類使用NSKeyValueCoding,然後設置一些驗證方法,它需要一些數據結構(例如屬性名稱數組),並檢查所需的屬性,默認值等。其餘的是如果你想做一些日誌記錄,設置默認值等,數據結構真的取決於你需要多少驗證。

0

您可以嘗試添加類別null & nil檢查你。爲避免因nil插入導致崩潰,您可以返回空字符串。例如,下面是幫助檢索非零/空字符串的NSDictionary類別。

- (id)nullSafeObjectForKey:(NSString *) iKey { 
    id retrievedValue = [self objectForKey:iKey]; 

    return ([retrievedValue isKindOfClass:[NSNull class]] || retrievedValue == nil) ? @"" : retrievedValue; 
} 
0

您可以使用NSStringNSArrayNSDictionaryNSDataUIImage

- (BOOL)isObjectEmpty:(id)object { 
     if ([object isKindOfClass:[NSNull class]] || object == nil) { 
      return YES; 
     } 
     if ([object isKindOfClass:[NSString class]]) { 
      if (object == nil || ([object respondsToSelector:@selector(length)] && [(NSString *)object length] == 0)) { 
       return YES; 
      } 
     } 
     else if ([object isKindOfClass:[NSArray class]]) { 
      if (object == nil || ([object respondsToSelector:@selector(count)] && [(NSArray *)object count] == 0)) { 
       return YES; 
      } 
     } 
     else if ([object isKindOfClass:[NSDictionary class]]) { 
      if (object == nil || ([object respondsToSelector:@selector(count)] && [(NSDictionary *)object count] == 0)) { 
       return YES; 
      } 
     } 
     else if ([object isKindOfClass:[NSData class]]) { 
      if (object == nil || ([object respondsToSelector:@selector(length)] && [(NSData *)object length] == 0)) { 
       return YES; 
      } 
     } 
     else if ([object isKindOfClass:[UIImage class]]) { 
      if (object == nil) { 
       return YES; 
      } 
     } 
     return NO; 
    }