TableViewController не отображает информацию о таблице - PullRequest
0 голосов
/ 18 февраля 2019

Привет, когда я делаю для цикла, чтобы получить все документы из коллекции.Я добавляю объект car в NSMutablearray, и когда я отлаживаю, я вижу, что объекты добавляются в массив, но когда я хочу, чтобы он отображался в таблице и получал счетчик массива, я вызываю [self.mycars count]чтобы получить счетчик, но счетчик равен нулю, и я не могу получить информацию из cell.textLabel.text = vehicle.name;так что я делаю не так.

#import "TableViewController.h"
#import "Car.h"
#import "Vehicle.h"

@interface TableViewController ()

@end

@implementation TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;

    self.db = [FIRFirestore firestore];
    self.myCars = [[NSMutableArray alloc] init];


    [[[[self.db collectionWithPath:@"users"] documentWithPath:[FIRAuth auth].currentUser.uid]
      collectionWithPath:@"cars"] getDocumentsWithCompletion:^(FIRQuerySnapshot *snapshot, NSError *error) {
        if (error != nil) {
            NSLog(@"Error getting documents: %@", error);
        } else {
            for (FIRDocumentSnapshot *document in snapshot.documents) {
                NSLog(@"%@ => %@", document.documentID, document.data);
                Car *car = [[Car alloc] initWithCarName:[document valueForField:@"carname"] andCarStyle:[document valueForField:@"carstyle"]
                                           andCarColour:[document valueForField:@"colour"] andCarYear:[document valueForField:@"caryear"]
                                            andCarDoors:[document valueForField:@"doors"] andCarSeat:[document valueForField:@"seat"] andCarWheels:[document valueForField:@"wheels"]
                                     andCarTankCapacity:[document valueForField:@"tankcapacity"] andCarHorsePower:[document valueForField:@"horsepower"] andCarModelName:[document valueForField:@"modelname"]];

                NSLog(@"Car name:%@", car.name);

                [self.myCars addObject:car];

            }
        }
    }];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.myCars count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellidentifier" forIndexPath:indexPath];

    // Configure the cell...'
    Vehicle *vehicle = [self.myCars objectAtIndex:indexPath.row];
    cell.textLabel.text = vehicle.name;

    return cell;
}



@end

1 Ответ

0 голосов
/ 18 февраля 2019

Вам необходимо перезагрузить данные вручную после изменения / обновления источника данных (в данном случае self.myCars), что означает, что вам нужно добавить [self.tableView reloadData]; после цикла for.Если он все еще не работает, вы можете проверить, инициализирована ли self.myCars.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...