質問

ヘッダーファイルで変数を宣言し、実装で合成します。ビューが読み込まれると(ViewDidLoad)、plistファイルを読み取り、変数に値を設定します。 NSLogで、変数に値が含まれていることがわかります。ただし、ビューが読み込まれた後、メソッドを実行するボタンを介してユーザーとやり取りします。そのメソッドの中で、値を再度チェックすると無効です。初期ロード後に変数がその値を保持しないのはなぜですか?

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
   ....
役に立ちましたか?

解決

user_title = [array objectAtIndex:0] は変数を保持しません。

代わりにこれを使用:

self.user_title = [array objectAtIndex:0];

これは、合成したセッターを使用し、値を保持します。

他のヒント

配列から取得した値を保持する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top