2013-07-05 141 views
0

好的。我花了很多時間在這個上。我在互聯網上四處搜尋,感覺非常愚蠢。我有一個程序,它是一個x,2,「+」的數組。因此,我製作了一個程序副本,並嘗試用variableValues中的值(5)替換x。如何用另一個對象替換MSMutableArray中的對象

誰能告訴我在世界上怎麼做到這一點?

+ (double)runProgram:(id)program usingVaraiableValues:(NSDictionary *)variableValues { 

    NSMutableArray *program2 = program; 
    for (NSString *obj in program) { 
     NSNumber *number = [variableValues objectForKey:obj]; 
     if (number) { 
      int index = [program indexOfObject:obj]; 
      NSLog(@"index = %i", index); 
      [program2 replaceObjectAtIndex:index withObject:number]; 
     } 
    } 
    return [self runProgram:program2]; 
} 
+1

'program2 = program'不會創建副本,更不是一個可變的副本。 – Kevin

回答

1

其實program2不是program副本,它是同一個內存地址的引用。改爲嘗試做NSMutableArray *program2 = [program mutableCopy];

+0

這可能不起作用,因爲'program'的類型是'id'。 :-P – lnafziger

+0

好的,也許,但不大可能。而且,如果'program'不是'NSArray',這行可能不會起作用。int index = [program indexOfObject:obj];'。 – leoformaggio

+1

是的,問題是,編譯器不會將'id'識別爲接受'mutableCopy'消息。它需要被轉換成一個'NSArray' ... – lnafziger

相關問題