Si la declaración se ejecuta antes de que se establezcan sus variables condicionales
-
30-10-2019 - |
Pregunta
Yo tengo un if
Declaración que su condición se pasa a este archivo de implementación a través de NSUserDefaults
como se ve a continuación.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *code = [defaults objectForKey:@"codeKey"];
selectedCodeLocal = code;
Después de este código para recuperar la variable de cadena, tengo una instrucción IF:
if (selectedCodeLocal == @"1")
textView.text = "@blah blah blah";
else
textview.text = "@abcdefghijklmnop";
Cuando construyo y ejecuto, parece que se está pasando la variable, pero no se está pasando hasta después del if
Declaración se ejecuta.
Tengo lugares NSLog
está alrededor de este código que devuelve mi selectedCodeLocal
Variable de cadena y el valor de la variable siempre es un paso atrás. (Por ejemplo, si lo paso por primera vez como 4, luego lo paso como 1, primero se devolverá en el registro como 1, luego como 4, entonces 1) Lo siento si te he confundido con eso.
ACTUALIZAR:
- (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";
}
El nslog todavía muestra el valor antiguo de selectedCodeLocal
.
Actualización: aquí es donde se establece esa clave. (en la vista anterior)
- (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: ¿Responde esto a su pregunta?
No hay solución correcta