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

개체를 추가 할 배열이 가변적인지 여부를 확인하십시오. 변경할 수없는 경우 새로운 배열을 만들거나 mutableCopy를 사용하여 기존 배열을 가변 배열로 변환 할 수 있습니다.