-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
- (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 回答
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 回答