RestKitバージョンの真/偽としてシリアライズ:0.27.0ブール値は、x-www-form-urlencodedで
RestKitはX-するNSDictionaryの中に保存されたブール値をシリアライズするようにする方法をどのような方法がありますwww-form-urlencodedパラメータ?
私はNSDictionaryの値で満たされている、それがエンコードされた文字列に伝播されます。
product=ACCOUNT&rejected=1&type=NUMBER_OF_LOGINS_MONTH
しかし、私は拒否されたパラメータの値として代わりに、1または0の真/偽必要です。
RKAttributeMappingのpropertyValueClassに似たクラス指定を使用して、デフォルトの型NSNumberをオーバーライドする方法はありますか?また、NSNumberは__NSCFBooleanとして内部的に実装されています。この情報をtrue/falseとして値をシリアル化するために使用できますか?また
static NSString * TSNRKAFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) {
NSMutableArray *mutablePairs = [NSMutableArray array];
for (TSNRKAFQueryStringPair *pair in TSNRKAFQueryStringPairsFromDictionary(parameters)) {
if([NSStringFromClass([pair.value class]) isEqualToString:@"__NSCFBoolean"]) {
pair.value = TSNNSCFBooleanToBooleanStringConvertor(pair.value);
}
[mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]];
}
return [mutablePairs componentsJoinedByString:@"&"];
}
NSString* TSNNSCFBooleanToBooleanStringConvertor(NSNumber* booleanInNSNumber) {
return [booleanInNSNumber boolValue] ? @"true" : @"false";
}
他の方法/オブジェクトをコピーして名前を変更することを忘れないでください:
ありがとうございました。問題は、NSDictionary以外の方法で、Restkitエンジンのブール値を伝播できないということです。そして同時に、私はRKコードを変更したくありません。私からの答えを見るhttp://stackoverflow.com/a/39120726/3389683 –
'NSDictionary'インスタンスでは、プリミティブブール値は辞書内のすべての型がオブジェクトでなければならないため、NSNumberとして表現されなければなりません。別の方法として、文字列を使用してサーバー側の数値/ブール値に変換する方法があります。 – vadian