Domanda

Dichiaro una variabile nel file header e la sintetizzo nell'implementazione. Quando la vista si carica (ViewDidLoad) ho letto un file plist e popolare la variabile con un valore. Con il mio NSLog vedo che la variabile contiene il valore. Tuttavia, dopo il caricamento della vista, ho una certa interazione con l'utente tramite un pulsante per eseguire un metodo. Con questo metodo ricontrollo il valore e non è valido. Perché la variabile non mantiene il suo valore dopo il caricamento iniziale?

program.h

....
NSString * user_title;
...
@property (nonatomic, retain) NSString *user_title;

program.m

@synthesize user_title;

-(void)viewDidLoad{

    NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
    NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
    user_title = [array objectAtIndex:0];
    [array release];
}
    ....


-(IBAction)user_touch_screen:(id)sender
 {
    user_label.text = user_title;  //user_title has an invaliud value at this point
   ....
È stato utile?

Soluzione

user_title = [array objectAtIndex: 0] non mantiene la variabile.

Usa questo invece:

self.user_title = [array objectAtIndex:0];

Questo utilizzerà il setter che hai sintetizzato e manterrà il valore.

Altri suggerimenti

Devi mantenere il valore che ottieni dall'array.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top