Objective C字典没有返回相同的数字

Kin*_*rog -1 objective-c

我想我忽略了一些东西,但是有人能看出我做错了什么吗?为什么返回2030774160?

NSDictionary* json = [NSJSONSerialization
                      JSONObjectWithData:responseData //1

                      options:kNilOptions
                      error:&error];

NSDictionary* observation = [json objectForKey:@"observation"];
NSDictionary* imperial = [observation objectForKey:@"imperial"];
NSLog(@"value of a is : %@ !\n", [imperial objectForKey:@"temp"]);

self.forecastText.text =[observation objectForKey:@"phrase_22char"];
self.hi = [imperial objectForKey:@"temp_max_24hour"];
self.forecastHigh.text =[NSString stringWithFormat:@"%d", self.hi];

NSLog(@"value of a is : %@ !\n", self.hi);
NSLog(@"value of a is : %@ !\n", self.forecastHigh.text);
Run Code Online (Sandbox Code Playgroud)
2019-01-06 11:20:15.246 TiP_Clock[2205:63494] ssssy.
2019-01-06 11:20:15.465 TiP_Clock[2205:63535] Data has loaded successfully.
2019-01-06 11:20:15.466 TiP_Clock[2205:63494] value of a is : 51 !
2019-01-06 11:20:15.466 TiP_Clock[2205:63494] value of a is : 58 !
2019-01-06 11:20:15.466 TiP_Clock[2205:63494] value of a is : 2030774160 !
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 5

self.hi = [imperial objectForKey:@"temp_max_24hour"];
Run Code Online (Sandbox Code Playgroud)

这使self.hi(指针)成为NSNumber.

self.forecastHigh.text =[NSString stringWithFormat:@"%d", self.hi];
Run Code Online (Sandbox Code Playgroud)

这使得self.forecastHigh.text指针的整数解释成为一个NSNumber半随机整数.

鉴于其他代码,你在这里的意思是:

self.forecastHigh.text =[NSString stringWithFormat:@"%@", self.hi];
Run Code Online (Sandbox Code Playgroud)

虽然它可能更清楚等同于:

self.forecastHigh.text = self.hi.stringValue;
Run Code Online (Sandbox Code Playgroud)