我在Root.plist中有一个设置,其中Key ='latestNews'的类型为PSToggleSwitchSpecifier,DefaultValue是一个被检查的布尔值。如果我理解正确的话,当我把它拉进我的代码时应该= YES。我正在尝试检查该值并设置一个int var以将其传递给我的PHP脚本。发生的事情是我的布尔值是nil或NO然后我的int var = 0.我做错了什么?
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
int latestFlag = ([[prefs objectForKey:@"latestNews"] isEqualToString:@"On"]) ? 1 : 0;
NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.mysite.com/folder/iphone-test.php?latest=%d", latestFlag];
NSURL *url = [[NSURL alloc] initWithString:urlstr];
//these are auto-released
NSString *ans = [NSString stringWithContentsOfURL:url];
NSArray *listItems = [ans componentsSeparatedByString:@","];
self.listData = listItems;
[urlstr release];
[url release];
更新: 真正的问题是我无法检索任何设置值。我将布尔设置更改为字符串,类似于书籍示例。所以现在我的设置有一个TrueValue =“On”和一个FalseValue =“Off”,DefaultValue =“On”。我现在正尝试使用上面的代码检索此设置。它应该=“On”,因为它是DefaultValue,但是我的int结尾= 0,表明我根本没有读取设置。
答案 0 :(得分:2)
当你设置一个布尔值时,设计它以便永远不会设置它是假的。如果要检查复选框的默认状态,则在值为false时将其设置为checked,并在值为true时取消选中它。
在您的情况下,将名称更改为“notLatestNews”并更改逻辑以匹配。
BOOL latestNews = ![[NSUserDefaults standardUserDefaults] boolForKey:@"notLatestNews"];