Имам един изглед на колекция с текстово поле във всяка клетка. Извличам стойности от речник 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]: неразпознат селектор, изпратен до екземпляра.
Как мога да разреша този проблем?