Skip to content

Commit bb9aca2

Browse files
authored
Merge pull request #726 from kinarobin/fix_decimal_number_transform_to_bool_bug
Fix decimal number transform to bool bug
2 parents 5ff7bbf + fc0ba34 commit bb9aca2

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

MJExtension/NSObject+MJKeyValue.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ - (instancetype)mj_setKeyValues:(id)keyValues context:(NSManagedObjectContext *)
159159
if (type.typeClass == [NSDecimalNumber class]) {
160160
value = [NSDecimalNumber decimalNumberWithString:oldValue];
161161
} else {
162-
value = @([NSDecimalNumber decimalNumberWithString:oldValue].doubleValue);
162+
NSDecimalNumber *decimalValue = [NSDecimalNumber decimalNumberWithString:oldValue];
163+
value = decimalValue == [NSDecimalNumber notANumber] ? @(0) : @(decimalValue.doubleValue);
163164
}
164165

165166
// 如果是BOOL

MJExtensionTests/MJExtensionTests.m

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ - (void)testJSON2Model {
3838
@"speed" : @"120.5",
3939
@"identifier" : @"3443623624362",
4040
@"price" : @"20.3",
41-
// @"gay" : @"NO"
42-
// @"gay" : @"true"
41+
@"rich" : @"2",
42+
@"collect" : @"40个"
4343
};
4444

4545
// 2.将字典转为MJUser模型
@@ -56,6 +56,38 @@ - (void)testJSON2Model {
5656
XCTAssert(user.speed == 120);
5757
XCTAssert(user.identifier == 3443623624362);
5858
XCTAssert(user.price == 20.3);
59+
XCTAssert(user.rich == YES);
60+
XCTAssert(user.collect == 40);
61+
}
62+
63+
- (void)testJSON2NumberModel {
64+
// 1.定义一个字典
65+
NSDictionary *dict = @{
66+
@"age" : @"20",
67+
@"height" : @1.55,
68+
@"money" : @"100.9",
69+
@"gay" : @"",
70+
@"speed" : @"120.5",
71+
@"identifier" : @"3443623624362",
72+
@"price" : @"20.3",
73+
@"like" : @"20个",
74+
@"collect" : @"收藏5",
75+
@"rich" : @"hehe",
76+
};
77+
78+
// 2.将字典转为MJUser模型
79+
MJUser *user = [MJUser mj_objectWithKeyValues:dict];
80+
81+
XCTAssert(user.age == 20);
82+
XCTAssert(user.height.doubleValue == 1.55);
83+
XCTAssert(user.money.doubleValue == 100.9);
84+
XCTAssert(user.gay == NO);
85+
XCTAssert(user.speed == 120);
86+
XCTAssert(user.identifier == 3443623624362);
87+
XCTAssert(user.price == 20.3);
88+
XCTAssert(user.like == 20);
89+
XCTAssert(user.collect == 0);
90+
XCTAssert(user.rich == NO);
5991
}
6092

6193
#pragma mark JSON字符串 -> 模型

MJExtensionTests/Model/MJUser.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,11 @@ typedef enum {
3434
@property (assign, nonatomic) long long identifier;
3535
/** 价格 */
3636
@property (assign, nonatomic) double price;
37+
/** 赞 */
38+
@property (assign, nonatomic) int like;
39+
/** 收藏 */
40+
@property (assign, nonatomic) int collect;
41+
/** 富有 */
42+
@property (assign, nonatomic) BOOL rich;
3743

3844
@end

0 commit comments

Comments
 (0)