0

どのようにイベントをtoDoArrayに渡すことができますか?私は何が欠けているのか分からない。どんな助けもありがたい。Objective-Cクラスオブジェクトが配列にマッピングされていません

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) 
+0

_toDoArrayを適切に初期化していないと思います。あなたは今すぐアイテムを追加し始めました。 – Joshua

答えて

1
arrayByAddingObject

方法は、追加のオブジェクトと別の配列を返し、それを追加しません。

これは、メソッドが使用されることが意図される方法です。

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

しかし、あなたの場合には、配列でも、初期化されていないようです。だから、あなたにもこのような何かを実行する必要があります。

-(void) viewDidLoad { 
    [super viewDidLoad]; 
    self.toDoArray = @[]; 
} 
+0

ありがとうございました。 – JetSet

1

その配列初期化ViewController.mで今ViewController.h

@property (nonatomic, strong) NSMutableArray *toDoArray; 

にこのようなNSMutableArrayとしてtoDoArrayを定義し、それ

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]; 
} 
にイベントのオブジェクトを追加します
0

オブジェクトを追加する配列が変更可能かどうかを確認してください。 mutableでない場合は、新しい配列を作成するか、mutableCopyを使用して既存の配列を可変配列に変換できます。

関連する問題