我有一个if
语句,它的条件通过NSUserDefaults
如下所示传递给这个实现文件。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *code = [defaults objectForKey:@"codeKey"];
selectedCodeLocal = code;
在这段代码检索字符串变量之后,我有一个 if 语句:
if (selectedCodeLocal == @"1")
textView.text = "@blah blah blah";
else
textview.text = "@abcdefghijklmnop";
当我构建并运行时,似乎正在传递变量,但直到if
语句执行之后才传递。
NSLog
我在这段代码周围有地方's 返回我的selectedCodeLocal
字符串变量,并且变量的值总是落后一步。(例如,如果我先将其作为 4 传递,然后将其作为 1 传递,它将在日志中首先以 1 的形式返回,然后以 4 的形式返回,然后以 1 的形式返回)对不起,如果我把你弄糊涂了。
更新:
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults synchronize];
selectedCodeLocal = [defaults objectForKey:@"codeKey"];
NSLog(@"set: %@",selectedCodeLocal);
self.navigationItem.title = selectedCodeLocal;
[textView setClipsToBounds:NO];
[textView setEditable:NO];
[textView setFrame:CGRectMake(20, 100, 50, 50)];
if ([selectedCodeLocal isEqualToString:@"100"])
textView.text = @"abc";
else
textView.text = @"xyz";
}
NSLog 仍然显示selectedCodeLocal
.
更新:这是设置密钥的位置。(在上一个视图中)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Get the selected code
NSString *selectedCode = nil;
if(searching)
selectedCode = [copyListOfItems objectAtIndex:indexPath.row];
else {
NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"codesKey"];
selectedCode = [array objectAtIndex:indexPath.row];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:selectedCode forKey:@"codeKey"];
[defaults synchronize];
}
@Firoze Lafeer:这能回答你的问题吗?