0

次のコードを使用して、NSNumber の値が nil かどうかを確認しています。そのため、NSNumber を文字列に変換し、その長さが 0 かどうかを確認しています。ゼロの場合は NSNull を返し、それ以外の場合は数値自体を返します。

   - (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]];

しかし、問題は、if ループが呼び出されていることです。NSNullToNilForKey の if ループから返される値は、<null>代わりに ですnull。どうすればこれを整理できますか?

4

2 に答える 2

1

フォーマットから文字列を作成しています。すべてのパラメーターは説明を取得することで追加されます。表示されているのはNSNullインスタンスの説明です。

メソッドは具体的に文字列を返す必要があり、返す文字列を明示的に選択する必要があります。

- (id)NSNullToNilForKey:(NSNumber *)number
{
    if ([[number stringValue] length] == 0){
        return @"NSNull";
    }
    return number;
}
于 2016-05-30T07:27:45.083 に答える
0

これを試して

タイプ anyobjectidをに変更しますNSNumber *

 - (NSNumber *)NSNullToNilForKey:(NSNumber *)number
{
    if ([[number stringValue] length] == 0){
        return [NSNull null];
    }
    return number;
}
于 2016-05-30T07:47:47.373 に答える