Я новичок в программировании на Obj C, поэтому я начну с начала. У меня есть массив с некоторыми элементами NSNumber и NSString, я хочу заменить элементы NSString на элементы NSNumber.Я решил сделать это с помощью for in, чтобы получить новое значение NSMutableArray для всех элементов и NSMutableIndexSet их индексы, но когда я сделал это, я столкнулся с проблемой, вот он, я показываю вам свой код и журнал.
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]];
после этого сбоя с отчетом об ошибках, о котором я упоминал ранее.Благодарю.