Pru*_*goe 0 casting objective-c ios
这两行代码是不同还是相同(编辑:他们做同样的事情,强制转换为布尔值吗?):
BOOL isRegistered = (BOOL)[[NSUserDefaults standardUserDefaults] valueForKey:@"DEVICE_REGISTERED"];
BOOL isRegistered = [[[NSUserDefaults standardUserDefaults] objectForKey:@"Is Registered"] boolValue];
Run Code Online (Sandbox Code Playgroud)
在iOS8.1中,第一个肯定是失败的.对bool的强制转换不起作用,强制转换总是返回错误状态.正在存储该值(对于第二个示例),如下所示:
[[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%i", registerSuccess]
forKey:@"Is Registered"];
Run Code Online (Sandbox Code Playgroud)
registerSuccess是从Web服务(JSON)返回的值.
你将一个NSString对象转换为bool,它永远不会做任何有用的事情.演员表不会改变或转换某些内容,它只会使编译器静音.
假设它isRegistered是一个NSNumber对象,因为它将从JSON响应中反序列化:使用NSNumber
[[NSUserDefaults standardUserDefaults] setObject:registerSuccess forKey:@"isRegistered"];
Run Code Online (Sandbox Code Playgroud)
和
BOOL isRegistered = [[[NSUserDefaults standardUserDefaults] objectForKey:@"isRegistered"] boolValue];
Run Code Online (Sandbox Code Playgroud)
或直接Bool
[[NSUserDefaults standardUserDefaults] setBool:[registerSuccess boolValue]forKey:@"isRegistered"];
BOOL isRegistered = [[NSUserDefaults standardUserDefaults] boolForKey:@"isRegistered];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |