15

我在我的 NSUserDefault 中为键 TCshow 设置了一个布尔值,我想运行一个 nslog 测试键是否保存,并且我试图打印出布尔值。这是我的代码,但它不起作用,有什么建议吗?

- (IBAction)acceptAction:(id)sender {
//key store to nsuserdefault
self.storedKey = [[NSUserDefaults alloc] init];
[self.storedKey setBool:YES forKey:@"TCshow"];
//trying to print out yes or not, but not working...
NSLog(@"%@", [self.storedKey boolForKey:@"TCshow"]);

}
4

7 回答 7

35

%@是为对象。BOOL不是一个对象。你应该使用%d.

它将打印出0FALSE/NO 和1TRUE/YES。

于 2012-08-14T12:54:17.460 回答
16

你应该使用

NSLog(flag ? @"Yes" : @"No");

flag是你的BOOL

于 2012-08-14T13:03:00.557 回答
3
NSLog(@"The value is %s", [self.storedKey boolForKey:@"TCshow"] ? "TRUE" : "FALSE");
于 2012-08-14T12:56:28.223 回答
2
NSLog(@"%d", [self.storedKey boolForKey:@"TCshow"]);
于 2012-08-14T12:53:53.910 回答
0
if([self.storedKey boolForKey:@"TCshow"]){
NSLog(@"YES");
}
else{
NSLog(@"NO");

}

我想这会对你有所帮助。

于 2012-08-14T12:56:24.090 回答
0

只是为了使用新语法,您总是可以将 bool 装箱,以便它是一个对象并且可以打印%@

NSLog(@"%@", @( [self.storedKey boolForKey:@"TCshow"] ));
于 2012-08-14T13:26:59.600 回答
0

已经在另一个帖子中回答了,复制到这里:


  • 直接将 bool 打印为整数
BOOL curBool = FALSE;
NSLog(@"curBool=%d", curBool);

->curBool=0

  • 将布尔转换为字符串
char* boolToStr(bool curBool){
    return curBool ? "True": "False";
}

BOOL curBool = FALSE;
NSLog(@"curBool=%s", boolToStr(curBool));

->curBool=False

于 2021-11-25T02:00:03.553 回答