我是新的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]);
}
}
當我運行它日誌顯示此:
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:]:索引集不能爲零我給索引集添加索引時出錯了。謝謝。 – 2012-02-13 23:36:56
對不起,我沒有看到提及的崩潰。你可以用你調用的代碼更新你的qustion - [NSMutableArray removeObjectsAtIndexes:], - [NSMutableArray replaceObjectsAtIndexes:withObjects:],或者 - [NSMutableArray insertObjects:atIndexes:]?謝謝! – iccir 2012-02-14 00:03:09
感謝您的幫助,我編輯問題 – 2012-02-14 05:45:22