forked from loafle/openapi-generator-original
Merge pull request #1063 from geekerzp/objc-deserialize-bool
[Objc] Fix deserialize bool value issue
This commit is contained in:
commit
be63776162
@ -436,7 +436,7 @@ static void (^reachabilityChangeBlock)(int);
|
|||||||
}
|
}
|
||||||
|
|
||||||
// primitives
|
// primitives
|
||||||
NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"BOOL", @"NSNumber"];
|
NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"];
|
||||||
|
|
||||||
if ([primitiveTypes containsObject:class]) {
|
if ([primitiveTypes containsObject:class]) {
|
||||||
if ([class isEqualToString:@"NSString"]) {
|
if ([class isEqualToString:@"NSString"]) {
|
||||||
@ -445,25 +445,24 @@ static void (^reachabilityChangeBlock)(int);
|
|||||||
else if ([class isEqualToString:@"NSDate"]) {
|
else if ([class isEqualToString:@"NSDate"]) {
|
||||||
return [NSDate dateWithISO8601String:data];
|
return [NSDate dateWithISO8601String:data];
|
||||||
}
|
}
|
||||||
else if ([class isEqualToString:@"BOOL"]) {
|
|
||||||
// Returns YES on encountering one of "Y", "y", "T", "t", or a
|
|
||||||
// digit 1-9—the method ignores any trailing characters
|
|
||||||
// NSString => BOOL => NSNumber
|
|
||||||
return [NSNumber numberWithBool:[data boolValue]];
|
|
||||||
}
|
|
||||||
else if ([class isEqualToString:@"NSNumber"]) {
|
else if ([class isEqualToString:@"NSNumber"]) {
|
||||||
// NSNumber from NSNumber
|
// NSNumber from NSNumber
|
||||||
if ([data isKindOfClass:[NSNumber class]]) {
|
if ([data isKindOfClass:[NSNumber class]]) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
else if ([data isKindOfClass:[NSString class]]) {
|
||||||
|
// NSNumber (NSCFBoolean) from NSString
|
||||||
|
if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) {
|
||||||
|
return [NSNumber numberWithBool:[data boolValue]];
|
||||||
// NSNumber from NSString
|
// NSNumber from NSString
|
||||||
else {
|
} else {
|
||||||
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
|
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
|
||||||
formatter.numberStyle = NSNumberFormatterDecimalStyle;
|
formatter.numberStyle = NSNumberFormatterDecimalStyle;
|
||||||
return [formatter numberFromString:data];
|
return [formatter numberFromString:data];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// model
|
// model
|
||||||
Class ModelClass = NSClassFromString(class);
|
Class ModelClass = NSClassFromString(class);
|
||||||
|
@ -436,7 +436,7 @@ static void (^reachabilityChangeBlock)(int);
|
|||||||
}
|
}
|
||||||
|
|
||||||
// primitives
|
// primitives
|
||||||
NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"BOOL", @"NSNumber"];
|
NSArray *primitiveTypes = @[@"NSString", @"NSDate", @"NSNumber"];
|
||||||
|
|
||||||
if ([primitiveTypes containsObject:class]) {
|
if ([primitiveTypes containsObject:class]) {
|
||||||
if ([class isEqualToString:@"NSString"]) {
|
if ([class isEqualToString:@"NSString"]) {
|
||||||
@ -445,25 +445,24 @@ static void (^reachabilityChangeBlock)(int);
|
|||||||
else if ([class isEqualToString:@"NSDate"]) {
|
else if ([class isEqualToString:@"NSDate"]) {
|
||||||
return [NSDate dateWithISO8601String:data];
|
return [NSDate dateWithISO8601String:data];
|
||||||
}
|
}
|
||||||
else if ([class isEqualToString:@"BOOL"]) {
|
|
||||||
// Returns YES on encountering one of "Y", "y", "T", "t", or a
|
|
||||||
// digit 1-9—the method ignores any trailing characters
|
|
||||||
// NSString => BOOL => NSNumber
|
|
||||||
return [NSNumber numberWithBool:[data boolValue]];
|
|
||||||
}
|
|
||||||
else if ([class isEqualToString:@"NSNumber"]) {
|
else if ([class isEqualToString:@"NSNumber"]) {
|
||||||
// NSNumber from NSNumber
|
// NSNumber from NSNumber
|
||||||
if ([data isKindOfClass:[NSNumber class]]) {
|
if ([data isKindOfClass:[NSNumber class]]) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
else if ([data isKindOfClass:[NSString class]]) {
|
||||||
|
// NSNumber (NSCFBoolean) from NSString
|
||||||
|
if ([[data lowercaseString] isEqualToString:@"true"] || [[data lowercaseString] isEqualToString:@"false"]) {
|
||||||
|
return [NSNumber numberWithBool:[data boolValue]];
|
||||||
// NSNumber from NSString
|
// NSNumber from NSString
|
||||||
else {
|
} else {
|
||||||
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
|
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
|
||||||
formatter.numberStyle = NSNumberFormatterDecimalStyle;
|
formatter.numberStyle = NSNumberFormatterDecimalStyle;
|
||||||
return [formatter numberFromString:data];
|
return [formatter numberFromString:data];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// model
|
// model
|
||||||
Class ModelClass = NSClassFromString(class);
|
Class ModelClass = NSClassFromString(class);
|
||||||
|
@ -149,4 +149,17 @@
|
|||||||
XCTAssertTrue([result[0][0] isKindOfClass:[NSString class]]);
|
XCTAssertTrue([result[0][0] isKindOfClass:[NSString class]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)testDeserializeBool {
|
||||||
|
NSString *data;
|
||||||
|
NSNumber *result;
|
||||||
|
|
||||||
|
data = @"true";
|
||||||
|
result = [apiClient deserialize:data class:@"NSNumber*"];
|
||||||
|
XCTAssertTrue([result isEqual:@YES]);
|
||||||
|
|
||||||
|
data = @"false";
|
||||||
|
result = [apiClient deserialize:data class:@"NSNumber*"];
|
||||||
|
XCTAssertTrue([result isEqual:@NO]);
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user