0

イベントを toDoArray に渡すにはどうすればよいですか? 何が欠けているのかわかりません。どんな助けでも感謝します。

SDEventModel.h

@interface SDEventModel : AWSDynamoDBObjectModel <AWSDynamoDBModeling>

ViewController.h

@property (nonatomic, strong) NSArray *toDoArray;

ViewController.m

    if (task.result) {
     AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
     for (SDEventModel *event in paginatedOutput.items) {
         //Do something with event.
         NSLog(@"Task results: %@", event);

         [self.toDoArray arrayByAddingObject:event];
         NSLog(@"To do array results: %@", self.toDoArray);

         [self.tableview reloadData];
     }
 }

これが NSLog の出力です。

Task results: <SDEventModel: 0x7faa88d81430> {
city = "New York";
image = "photo-22.jpg";
title = "Hang with friends";
}
To do array results: (null)
4

3 に答える 3

2

このarrayByAddingObjectメソッドは、追加されたオブジェクトを含む別の配列を返し、同じものを追加しません。

これは、メソッドの使用方法を示しています。

self.toDoArray = [self.toDoArray arrayByAddingObject:event];

ただし、あなたの場合、配列は初期化されていないようです。したがって、次のようなことも行う必要があります。

-(void) viewDidLoad {
    [super viewDidLoad];
    self.toDoArray = @[];
}
于 2016-10-26T05:33:54.570 に答える
1

toDoArray を次のNSMutableArrayように定義しますViewController.h

@property (nonatomic, strong) NSMutableArray *toDoArray;

ViewController.mその配列を初期化し、イベントのオブジェクトを追加します

if (task.result) {
     self.toDoArray = [NSMutableArray new];
     AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
     for (SDEventModel *event in paginatedOutput.items) {
         //Do something with event.
         NSLog(@"Task results: %@", event);
         [self.toDoArray addObject:event];
     }
         NSLog(@"To do array results: %@", self.toDoArray);
         [self.tableview reloadData];
}
于 2016-10-26T05:36:30.777 に答える