2016-02-12 34 views
-1

在我的應用程序,我取了一些在線數據,並且需要分析它。 有時候,有可能出現在變量的值查閱什麼手段(_NSCFString *)@「<null>」

(_NSCFSTring *) @"<null>" 

我已經在模擬器和iOS9在設備上成功運行我的代碼。 我用

[myString containsString:@"null"]; 

在這種情況下行事。它感覺不好,但它工作。 現在我正在測試iOS7中較老的設備,並且不那麼寬容:它在該行上崩潰。

所以,我想

[myString isKindOfClass:[NSNull class]]; 

但這似乎並不適用。

所以,基本上,我很短的知識在這裏,我希望你們中的一個能解釋一下這是怎麼一回事。

謝謝!

回答

1

@"<null>"是將[NSNull null]轉換成NSString的結果,例如,使用:

id value = [NSNull null]; 
NSString *stringValue = [value description]; 

注意stringValue是一個字符串,因此條件[myString isKindOfClass:[NSNull class]]將是錯誤的。

你必須檢查NSNull您的值轉換爲NSString之前。

一個典型的解決方案是轉換NSNullnil,例如上NSDictionary聲明一個類中的方法:

- (id)betterObjectForKey:(NSString *)key { 
    id value = [self objectForKey:key]; 

    if (value == [NSNull null]) { 
     return nil; 
    } 

    return value; 
} 

,然後使用betterObjectForKey:代替objectForKey:。我個人使用變體解析服務器數據時,它檢查值(例如NSNumberNSString)的類型。

+0

好的,謝謝。這回答了我的問題(的確,這是json數據)。在這個階段使用什麼水密條件,我應該決定不首先檢查json null值嗎? – Sjakelien