-2

私はこのコードでsigarbtを取得しています

if (![newPlayerName isEqual:@""] && !thereAreJustSpaces)
    {

        NSDictionary *player = [NSDictionary dictionaryWithObjectsAndKeys:
                                newPlayerName, @"name", @"", @"email", nil];

        [self.playerNames addObject:player];//Getting sigarbt over here.
    }

これが私のコンソール出力です

2013-03-26 08:44:30.683 ChooseTeams[3921:15203] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
*** First throw call stack:
(0x1655022 0xfcdcd6 0x15fda48 0x15fd9b9 0x164eda8 0x164ecb0 0x43f9 0x1656e99 0x13314e 0x371a0e 0x1656e99 0x13314e 0x1330e6 0x1d9ade 0x1d9fa7 0x1d9266 0x1583c0 0x1585e6 0x13edc4 0x132634 0x17e8ef5 0x1629195 0x158dff2 0x158c8da 0x158bd84 0x158bc9b 0x17e77d8 0x17e788a 0x130626 0x26dd 0x2605 0x1)
terminate called throwing an exception(lldb) 

私は財産を持っています

@property (strong, nonatomic) NSMutableArray *playerNames;

およびviewDidLoadで

self.playerNames = [[NSMutableArray alloc] init];
4

4 に答える 4

1

あなたはあなたの例外にあると答えます

2013-03-26 08:44:30.683 ChooseTeams [3921:15203] *キャッチされなかった例外'NSInternalInconsistencyException'、理由:'-[__ NSCFArray insertObject:atIndex:]:**変更メソッドが不変オブジェクトに送信されたためにアプリを終了します'

self.playerNamesはNSArrayであり、 NSMutableArrayである必要があります。

于 2013-03-26T06:49:38.413 に答える
0

「playerNames」は変更可能である必要があります。

例:

playerNames=[[NSMutableArray alloc]init];
于 2013-03-26T07:04:38.423 に答える
0

例外は、あなたが思っているところから来ていないかもしれません。変更不可能なオブジェクトをNSArrayに追加しようとしていることを明確に示しているので、それが起こります。疑わしいplayerNamesが変更可能でないか、playerNamesに挿入していません。

Xcodeのデバッグについて学び始める必要があります。まず、Objective-C例外にブレークポイントを設定します。次に、問題が発生した場所が正確にわかります。次に、playerNamesに保存した値を表示し、問題が発生したときにそれが同じ配列であることを確認します。

于 2014-03-01T15:03:50.270 に答える
0
- (id) init
{
    self = [super init];
    if (self)
    {
        self.playerNames = [NSMutableArray array];
    }
   return self;
}  

他の何か:

newPlayerName = [newPlayerName stringByReplacingOccurrencesOfString:@" " withString:@""];

if (![newPlayerName isEqualToString:@""])
    {

        NSArray *keys = [[NSArray alloc] initwithobjects:@"key1", @"key2",nil];
        NSArray *objects = [[NSArrayAlloc] initwithobjects:@"value1",@"value2",nil];

        NSDictionary *dic = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];

        [self.playerNames addObject:player];//Getting sigarbt over here.
    }
于 2014-03-01T15:14:18.387 に答える