Я новичок в программировании на Obj C, поэтому я начну с начала У меня есть массив с некоторыми элементами NSNumber и NSString, я хочу заменить элементы NSString на элементы NSNumber. Я решил сделать это с тем, чтобы в конструкции получить новое значение NSMutableArray для всех элементов и NSMutableIndexSet их индексы, но когда я сделал это, я столкнулся с проблемами, вот он, я покажу вам свой код и журнал.Objective-C: определение индекса объекта в массиве
NSArray *oneMoreStack = [program copy];
NSLog(@" stack=%@",oneMoreStack);
NSLog(@" show me index ind=%@",[oneMoreStack indexOfObject:@"x"]);
NSMutableIndexSet *myVarIndexesSet;
NSMutableArray *myVarsArray;
for (id myVarConst in oneMoreStack) {
if([myVarConst isKindOfClass:[NSString class]])
{
if([myVarConst isEqualToString:@"x"]){
[myVarsArray addObject:myVarConst];
NSLog(@"obj x=%@",myVarConst);
[myVarIndexesSet addIndex:[oneMoreStack indexOfObject:myVarConst]];
NSLog(@"ind x=%@",[oneMoreStack indexOfObject:myVarConst]);
}
}
Когда я запускаю его журнал показать мне это:
Calculator[6306:f803] stack=(
x,
2,
"+"
)
Calculator[6306:f803] show me index ind=(null)
Calculator[6306:f803] obj x=x
Calculator[6306:f803] ind x=(null)
then crash [NSMutableArray replaceObjectsAtIndexes:withObjects:]: index set cannot be nil
Итак, мой вопрос почему [oneMoreStack indexOfObject:myVarConst]
возвращение null
? Как я могу это исправить? Благодарю. Я не упоминаю этот код раньше, потому что проблема заключается в получении индексов.
после предыдущей части кода идет в этой части:
[stack replaceObjectsAtIndexes:[myVarIndexesSet copy] withObjects:[myVarsArray copy]];
после этого столкновения с сообщением об ошибке я упомянул ранее. Благодарю.
да, я не думаю об этом, теперь необходимо войти шоу мне нужен индекс, но возникает еще один вопрос: если все отлично с индексами, почему сообщение об ошибке в журнале является «Завершить приложение из-за неотображенного исключения» NSInvalidArgumentException, причина: * * ** - [NSMutableArray replaceObjectsAtIndexes: withObjects:]: индексный набор не может быть nil' я сделал что-то не так, когда добавляю индекс в индексный набор? Благодарю. –
Извините, я не заметил упоминания об аварии. Можете ли вы обновить свой qustion кодом, который вы вызываете, - [NSMutableArray removeObjectsAtIndexes:], - [NSMutableArray replaceObjectsAtIndexes: withObjects:] или - [NSMutableArray insertObjects: atIndexes:]? Благодаря! – iccir
спасибо за помощь, я редактирую вопрос –