1

ヘッダーファイルでプロパティNSMutableArrayを宣言しました。次に、割り当て、viewDidLoadメソッドで初期化します。しかし、別のメソッドでオブジェクトを配列に追加しようとすると、オブジェクトが返され続けます(null)。私はいくつかの明らかな間違いをしていますか?さらにコードを見たいかどうか尋ねてください。

.h

@property (strong, nonatomic) NSMutableArray *myList;

.m

- (void)viewDidLoad
{
    self.dataController = [[DataController alloc]init];

    self.myList = [[NSMutableArray alloc] init];

    [super viewDidLoad];
}

[...]

NSDictionary *myObject = [self.dataController.objectList objectAtIndex:r];
[[cell textLabel]setText:[myObject objectForKey:@"title"]];

[self.myList addObject:myObject]; 

NSLog(@"myList %@",self.myList);
NSLog(@"myObject %@",myObject);

出力はmyObjectを出力しますが、self.myListは戻り続けます(null)。すべての助けに感謝します!

編集:修正、回答ありがとうございます!

4

3 に答える 3

1

この配列をどこで使用しているかわかりません。が呼び出される前にこの配列を使用する必要がある場合viewDidLoadは、次のように実行できます。

NSDictionary *myObject = [self.dataController.objectList objectAtIndex:r];
[[cell textLabel]setText:[myObject objectForKey:@"title"]];

if (!self.myList)
    self.myList = [[NSMutableArray alloc] init];//for the first time, this will initialize

[self.myList addObject:myObject]; 

を使用しているので[cell textLabel]、テーブル ビュー デリゲートの 1 つでこれを行っていると想定しています。その場合self.myList = nil;、クラス内のどこかに設定しているかどうかを確認してください。

于 2012-12-11T00:52:25.443 に答える
0

投稿されたコードでは、エラーは表示されません。ブレークポイントを設定し、配列を初期化するコードが最初に呼び出されるかどうかを確認します。

于 2012-12-11T00:28:52.797 に答える
0

NSLogs が実行されるとき、viewDidLoad はまだ呼び出されていないに違いありません。

配列が初期化されたことを確認するには、初期化を init メソッドに入れてみてください。

于 2012-12-11T00:29:43.480 に答える