Как правильно установить количество строк в табличном виде Xcode? - PullRequest
0 голосов
/ 03 августа 2020

Я пытался установить количество строк для представления таблицы в моем контроллере, используя следующий метод:

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

предложения - это NSArray, который я объявил и заполнил методом viewDidLoad:

- (void)viewDidLoad {
    [super viewDidLoad];
    //Fill arrays accordingly
    if ([self.item  isEqualToString:@"Laptops"]){
        self.offers = @[@"MacBook Air", @"MacBook Pro", @"HP"];
        self.prices = @[@800, @1200, @600];
        self.offerNames = [[NSMutableArray alloc] init];
        self.offerPrices = [[NSMutableArray alloc] init];
        
        self.offerNames = [NSMutableArray arrayWithArray:_offers];
        self.offerPrices = [NSMutableArray arrayWithArray:_prices];
        
        
    }
}

Когда я пытаюсь запустить приложение, я получаю следующую ошибку:

-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xe4a88af02df0791a

Я точно не знаю, что не так в моем коде, и у меня никогда не было этой ошибки раньше. PS: Я использовал тот же метод для настройки других представлений таблиц в других контроллерах, и ни один из них не выдал эту ошибку.

Это файл заголовка:

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface OffersTableViewController : UITableViewController

@property NSString *item;

@property (strong, nonatomic) NSMutableArray *offerNames;
@property (strong, nonatomic) NSMutableArray *offerPrices;

@end

NS_ASSUME_NONNULL_END

Здесь я установил значение Товара:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
    OffersTableViewController *offers = segue.destinationViewController;
    
    NSString *chosenItem = [[NSString alloc]init];
    
    if (isFiltered){
         chosenItem = filteredArray[indexPath.row];
    }
    else{
         chosenItem = self.itemNames[indexPath.row];
    }
    
    offers.item = chosenItem;
}

Спасибо за помощь ?

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Замените

if ([self.item  isEqualToString:@"Laptops"])

на

if ([[NSString stringWithFormat:@"%@", item] isEqualToString:@"Laptops"]])
0 голосов
/ 04 августа 2020

После некоторой отладки, комментирования некоторых строк кода и сужения области поиска. Я понял, что мне нужно исправить эту строку кода

cell.detailText.text = self.prices[indexPath.row];

To:

NSString *detailText = [NSString stringWithFormat: @"$ %@", self.prices[indexPath.row];
cell.detailText.text = detailText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...