当我尝试使用
lblSchool.text = [[NSUserDefaults standardUserDefaults] objectForKey:SCHOOL_NAME];
这给出空白值。但是下面的代码在结果页面中显示值。
lblSchool.text = @"Test Name";
和
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"INTL" message:[[NSUserDefaults standardUserDefaults] objectForKey:SCHOOL_NAME] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
更新
当我从文本中删除换行符(修剪新行)时,问题就解决了。
我使用了以下代码行。
NSString *greeting = [[[NSUserDefaults standardUserDefaults]objectForKey:SCHOOL_NAME] stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
lblSchool.text = greeting;
最佳答案
在 NSUserDefaults
中设置值如下:
在存储值后同步 NSUserDefaults
:
NSUserDefaults
的synchronize
方法会定期自动调用,只有当你不能等待自动同步时才使用此方法,如果你想使用 中的值NSUserDefaults
经常或在短时间内使用 synchronize
(正如 Russell 指出的那样)。
[[NSUserDefaults standardUserDefaults]setObject:@"SchoolName" forKey:SCHOOL_NAME];
[[NSUserDefaults standardUserDefaults]synchronize];
记录值并检查值是否实际存在,如下所示:
NSLog(@"SchoolName is: %@",[NSUserDefaults standardUserDefaults]objectForKey:SCHOOL_NAME]);
如果值确实存在,那么您的以下代码应该可以正常工作:
lblSchool.text = [[NSUserDefaults standardUserDefaults] objectForKey:SCHOOL_NAME];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"INTL" message:[[NSUserDefaults standardUserDefaults] objectForKey:SCHOOL_NAME] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
关于ios - 无法在 labelText 中提供动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737293/