У меня есть одно представление коллекции с текстовым полем в каждой ячейке. Я извлекаю значения из словаря nsmutable и устанавливаю текст текстового поля в ячейке, используя следующие коды.
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionviewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
NSDictionary *datadictionary = [_currencyDictionary objectForKey:_currencyNameDetails[_flag]];
cell.currenyRate.text = [datadictionary objectForKey:_currencyRateValueDetails[row]];
return cell;
}
В этой ситуации мое приложение разбилось, показать ошибку ....
Завершение работы приложения из-за неперехваченного исключения '
NSInvalidArgumentException», причина: «-[__NSCFNumber length]: в экземпляр отправлен нераспознанный селектор.
Я нахожу причину этого, используя указанный ниже метод. Объект [datadictionary objectForKey:_currencyRateValueDetails[row]] имеет формат nsnumber.
if([[datadictionary objectForKey:_currencyRateValueDetails[row]] isKindOfClass:[NSNumber class]])
{
NSLog(@"nsnumber......");
}
else{NSLog(@"nsstring......");
}
поэтому перепишите мой код на
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionviewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
NSDictionary *datadictionary = [_currencyDictionary objectForKey:_currencyNameDetails[_flag]];
NSNumber *Value =[[NSNumber alloc]init];
Value = [currenymap objectForKey:_currencyRateValueDetails[row]];
NSString *myString = [Value stringValue];
cell.currenyRate.text = myString;
return cell;
}
На этот раз сбой приложения снова показывает ошибку
Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[__NSCFConstantString stringValue]: экземпляру отправлен нераспознанный селектор.
Как я могу решить эту проблему?