2016-05-30 103 views
0

我正在使用以下代碼來檢查NSNumber是否具有零值。所以我將NSNumber轉換爲字符串,並檢查它的長度是否爲0.如果它爲零,則返回NSNull,否則我會返回數字本身。NSNull返回<null>而不是返回null

- (id)NSNullToNilForKey:(NSNumber *)number 
    { 
     if ([[number stringValue] length] == 0){ 
      return [NSNull null]; 
     } 
     return number; 
    } 

林調用它,如下所示,

NSString *bodyString = [NSString stringWithFormat:@"[ \"%@\",{\"session_token\": \"%@\",\"request\": [\"GetAssigneeWiseCompliancesChart\",{\"country_id\": %@,\"business_group_id\": %@,\"legal_entity_id\": %@,\"division_id\": %@,\"unit_id\": %@,\"user_id\": %@}]}]",clientSessionId,clientSessionId,[self NSNullToNilForKey:countryId],[self NSNullToNilForKey:businessGroupId],[self NSNullToNilForKey:legalEntityId],[self NSNullToNilForKey:divId],[self NSNullToNilForKey:unitId], [self NSNullToNilForKey:userId]]; 

但問題是,雖然如果循環得到調用。從NSNullToNilForKey的if循環返回的值是<null>而不是null。我怎樣才能解決這個問題?

+0

是什麼意思'如果循環得到調用valu' –

+0

我已經更新了我的問題 – Roger

+0

可我知道你爲什麼想要將null傳遞給服務器 –

回答

2

您正在創建一個格式的字符串,所有參數都是通過描述來添加的,您所看到的是NSNull實例的描述。

你的方法應該特別返回一個字符串,你應該明確地選擇你想要返回的字符串。

- (id)NSNullToNilForKey:(NSNumber *)number 
{ 
    if ([[number stringValue] length] == 0){ 
     return @"NSNull"; 
    } 
    return number; 
} 
+0

是否有任何意思,我可以插入NSNull而不是? – Roger

+0

你已經在返回那個實例,但你不能改變它返回的描述,你需要返回一個字符串,而不是 – Wain

+0

請你參考我的代碼解釋嗎?謝謝 – Roger

1

試試這個

變化類型anyobject idNSNumber *

- (NSNumber *)NSNullToNilForKey:(NSNumber *)number 
{ 
    if ([[number stringValue] length] == 0){ 
     return [NSNull null]; 
    } 
    return number; 
} 
+0

我試過了,但仍然插入而不是null ... – Roger