Obtenga una matriz de la columna de análisis en UITableView

Tengo varias columnas en mi aplicación donde 1 columna es del tipo array. Quiero get los elementos de esa matriz SÓLO en esa fila en mi UITableView, pero tengo algunos problemas, ya que numberOfRows solo obtiene 1 porque solo hay una fila, pero quiero contar la matriz de esa fila en lugar de las filas mismas.

¿Cómo puedo lograr esto con un PFQueryTableViewController?

Aquí hay algunos de mis "códigos de experimentación" con esto:

#import "ReviewsViewController.h" #import "MyManager.h" @interface ReviewsViewController () { // Declare variables int totalCount; int currentReview; } @end @implementation ReviewsViewController - (id)initWithCoder:(NSCoder *)aCoder { self = [super initWithCoder:aCoder]; if (self) { // Setup currentReview currentReview = 0; // The className to query on self.parseClassName = @"Story"; // The key of the PFObject to display in the label of the default cell stlye self.textKey = @"objectId"; // Whether the built-in pull-to-refresh is enabled self.pullToRefreshEnabled = YES; // Whether the built-in pagination is enabled self.paginationEnabled = NO; } return self; } - (PFQuery *)queryForTable { PFQuery *query = [PFUser query]; query = [PFQuery queryWithClassName:self.parseClassName]; [query whereKey:@"Title" equalTo:[[MyManager shanetworkingManager] selectedStory]]; return query; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // Setup totalCount totalCount = 1; } -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:YES]; // Set the delegate(s) and datasource _reviewsTableView.delegate = self; _reviewsTableView.dataSource = self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of objects in the section NSArray *reviews = [[NSArray alloc] init]; for (PFObject *object in [self objects]){reviews = (NSArray *)[object objectForKey:@"Reviews"];} totalCount = reviews.count; NSLog(@"%@%d", @"count: ", totalCount); return totalCount; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object { static NSString *simpleTableIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; } // Configure the cell UILabel *reviewLabel = (UILabel *)[cell viewWithTag:10]; NSArray *reviews = [[NSArray alloc] init]; for (PFObject *object in [self objects]){reviews = (NSArray *)[object objectForKey:@"Reviews"];} reviewLabel.text = reviews[currentReview]; currentReview++; // Increase it for next time return cell; } @end 

Tengo la sensación de que este código no es de mucha utilidad, pero el objective es get todos los elementos de la matriz de 1 fila en un UITableView; la pregunta es, ¿cómo?

ACTUALIZAR

Mi "nuevo" código me da este error:

  Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 

Aquí está el código correspondiente:

 #import "ReviewsViewController.h" #import "MyManager.h" @interface ReviewsViewController () { // Declare variables NSArray *myObjects; } @end @implementation ReviewsViewController - (id)initWithCoder:(NSCoder *)aCoder { self = [super initWithCoder:aCoder]; if (self) { // The className to query on self.parseClassName = @"Story"; // The key of the PFObject to display in the label of the default cell stlye self.textKey = @"objectId"; // Whether the built-in pull-to-refresh is enabled self.pullToRefreshEnabled = YES; // Whether the built-in pagination is enabled self.paginationEnabled = NO; } return self; } - (void)objectsDidLoad:(NSError*)error { [super objectsDidLoad:error]; // Extract out the desinetworking array and assign it to myObjects myObjects = [[NSArray alloc] init]; for (PFObject *object in [self objects]){ myObjects = (NSArray*)[object objectForKey:@"Reviews"]; } [self.tableView reloadData]; } - (PFQuery *)queryForTable { PFQuery *query = [PFUser query]; query = [PFQuery queryWithClassName:self.parseClassName]; [query whereKey:@"Title" equalTo:[[MyManager shanetworkingManager] selectedStory]]; return query; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:YES]; // Set the delegate(s) and datasource _reviewsTableView.delegate = self; _reviewsTableView.dataSource = self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return myObjects.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath object:(PFObject *)object { static NSString *simpleTableIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; } // Configure the cell using myObjects UILabel *reviewLabel = (UILabel *)[cell viewWithTag:10]; reviewLabel.text = [myObjects objectAtIndex:indexPath.row]; return cell; } @end 

aquí puedes ver que ambos elementos en la matriz se descargan:

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

¡Gracias! Erik

Hay algunas opciones, pero esta es la más fácil en mi opinión.

1) Crea una nueva variable de miembro, llámala myObjects:

 NSArray *myObjects; 

2) Anular objects LoadDid:

 - (void)objectsDidLoad:(NSError*)error { [super objectsDidLoad:error]; // Extract out the desinetworking array and assign it to myObjects myObjects = [[NSArray alloc] init]; for (PFObject *object in [self objects]){ myObjects = (NSArray*)[object objectForKey:@"Reviews"]; } [self.tableView reloadData]; } 

3) Sobrecarga objectAtIndexPath:

 - (PFObject*) objectAtIndexPath:(NSIndexPath*)indexPath { PFObject *object = [PFObject objectWithClassName: @"Object"]; [object setObject:[myObjects objectAtIndex:indexPath.row] forKey:@"string"]; return object; } 

4) Utilice myObjects para numberOfRowsInSection:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return myObjects.count; } 

5) Usa tu object personalizado para cellForRowAtIndexPath:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath object:(PFObject *)object { static NSString *simpleTableIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; } // Configure the cell using object UILabel *reviewLabel = (UILabel *)[cell viewWithTag:10]; reviewLabel.text = [object objectForKey:@"string"]; return cell; }