ios - 无法在 labelText 中提供动态值

标签 ios objective-c

当我尝试使用

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/

相关文章:

ios - 如何知道在 iOS 9 : popoverControllerDidDismissPopover deprecated 中弹出窗口何时消失

objective-c - 单击时展开 UITextView?

ios - 如何查看使用 valueForKey 创建的 NSArray 是否为空

ios - 支持方向

ios - presentViewController 是否清理父 View ?

ios - QT Creator iOS 错误 : The settings in the Devices window of Xcode might be incorrect

iphone - Box2d Loop Shape/在 Cocos2D 中创建静态地面形状

ios - ios中两个Label的圆角

objective-c - retainCount 增加或减少的条件

objective-c - 核心数据和自反实体关系(一对一或一对多)