Obj C 프로그래밍에 새로운 기능이있어서 처음부터 시작합니다. 일부 NSNumber 및 NSString 요소가있는 배열이 있는데 NSString elems를 NSNumber elems로 대체하려고합니다. 나는 이것을 위해 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]);
}
}
나는 그것이 나에게 보여 로그 실행할이 : [oneMoreStack indexOfObject:myVarConst]
반환 null
않는 이유
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
그래서, 내 질문은? 어떻게 해결할 수 있습니까? 감사. 인덱스를 가져 오는 데 문제가 있다고 생각하기 때문에이 코드는 언급하지 않았습니다. 내가 이전에 언급 오류 보고서와 그 충돌 후
[stack replaceObjectsAtIndexes:[myVarIndexesSet copy] withObjects:[myVarsArray copy]];
: 코드의 이전 부분 후
이 부분을 간다. 감사.
을 그래, 난 그것에 대해 생각하지 않는다, 지금 쇼를 기록 나 인덱스하지만, 로그에있는 오류 메시지가 '캐치되지 않은 예외로 인해 응용 프로그램 종료 중입니다'라는 이유로 인덱스가 모두 정상인 경우 다른 질문이 나타납니다. 'NSInvalidArgumentException', 이유 : '* ** - [NSMutableArray replaceObjectsAtIndexes : withObjects :] : 인덱스 세트는 nil이 될 수 없습니다. '인덱스 세트에 인덱스를 추가 할 때 뭔가 잘못되었습니다. ?? 감사. –
죄송합니다, 나는 충돌에 대한 언급을 보지 못했습니다. 당신이 호출 한 코드로 당신의 퀴티온을 업데이트 할 수 있습니까? [NSMutableArray removeObjectsAtIndexes :], - [NSMutableArray replaceObjectsAtIndexes : withObjects :], 또는 - [NSMutableArray insertObjects : atIndexes :]? 감사! – iccir
도움을 주셔서 감사합니다. 질문을 편집하십시오. –