ステートメントが条件付き変数が設定される前に実行される場合
-
30-10-2019 - |
質問
を持っています 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
私を返すこのコードの周りに 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:これはあなたの質問に答えますか?
正しい解決策はありません
所属していません StackOverflow