0

Я пытался сохранить некоторые данные в базу огня. Так что формат похож на добавление содержимого в NSMutableDictionary, а затем добавляю его в NSMutableArray и отправляю в FireBase.For первый раз он работал, когда я пытался добавить второе содержимое в его сбой с следующим сообщениемОшибка при добавлении NSMutableDictionary в NSMutableArray в iOS?

2014-12-08 14:36:43.388 ChangeText[1634:576618] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x17023e580 
2014-12-08 14:36:43.392 ChangeText[1634:576618] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x17023e580' 
*** First throw call stack: 
(0x184db259c 0x1954c00e4 0x184db9664 0x184db6418 0x184cbab6c 0x1000fce74 0x189598d34 0x189581e48 0x1895986d0 0x18959835c 0x1895918b0 0x189564fa8 0x189803f58 0x189563510 0x184d6a9ec 0x184d69c90 0x184d67d40 0x184c950a4 0x18de3f5a4 0x1895ca3c0 0x1000fd7ec 0x195b2ea08) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Моим кодом

Viewdidload

arr=[[NSMutableArray alloc]init]; 
    Firebase *fire=[[Firebase alloc]initWithUrl:@"http://del.firebaseio.com/users"]; 
    [fire observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 
     // self.status.text=snapshot.value; 
     NSLog(@"snapshot%@",snapshot.value); 
     arr=[snapshot.value copy]; 

     NSLog(@"copied%@",arr); 


    }]; 

кнопку для добавления значений в Firebase

// arr=[[NSMutableArray alloc]init]; 

    dict=[[NSMutableDictionary alloc]init]; 
    [dict setValue:@"test1" forKey:@"username"]; 
    [dict setValue:@"test2" forKey:@"password"]; 
    [dict setValue:@"test3" forKey:@"profilepic"]; 
    [dict setValue:@"test4" forKey:@"profile"]; 
    [dict setValue:@"test5" forKey:@"details"]; 
    [arr addObject:dict]; 
    NSLog(@"added new elements%@",arr); 

    Firebase *f=[[Firebase alloc]initWithUrl:@"http://del.firebaseio.com/users"]; 
    [f setValue:arr ]; 

Мои консольные журналы

2014-12-08 14:36:32.017 ChangeText[1634:576618] snapshot(
     { 
     details = test5; 
     password = test2; 
     profile = test4; 
     profilepic = test3; 
     username = test1; 
    } 
) 
2014-12-08 14:36:32.019 ChangeText[1634:576618] copied(
     { 
     details = test5; 
     password = test2; 
     profile = test4; 
     profilepic = test3; 
     username = test1; 
    } 
) 
2014-12-08 14:36:43.388 ChangeText[1634:576618] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x17023e580 
2014-12-08 14:36:43.392 ChangeText[1634:576618] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x17023e580' 
*** First throw call stack: 
(0x184db259c 0x1954c00e4 0x184db9664 0x184db6418 0x184cbab6c 0x1000fce74 0x189598d34 0x189581e48 0x1895986d0 0x18959835c 0x1895918b0 0x189564fa8 0x189803f58 0x189563510 0x184d6a9ec 0x184d69c90 0x184d67d40 0x184c950a4 0x18de3f5a4 0x1895ca3c0 0x1000fd7ec 0x195b2ea08) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Пожалуйста, помогите мне исправить эту ошибку

ответ

0
arr = [snapshot.value copy]; 

Эта строка присваивает экземпляр NSArray типа для вашего arr объекта. Вот почему вы пытаетесь добавить объекты в свой массив, он разбивается, потому что текущий экземпляр имеет тип NSArray, а не NSMutableArray. Заменить выше строку со следующей строкой:

[arr addObjectsFromArray:snapshot.value]; 
+0

Wow..that was cool..it теперь работает благодаря приятелю –

+0

Как проверить, является ли snapshot.value нулевым или нет? –

+0

выполнить 'nil' check:' if (snapchot.value) {[arr addObjectsFromArray: snapchot.value]} ' –

2

[arr addObject:dict]; является создание аварии в этом случае, так как arr неизменен.

arr=[snapshot.value copy]; дает вам неизменную копию объекта. Вы можете попробовать с

arr=[snapshot.value mutableCopy];

+0

Благодаря Anoop .the первый один работает для меня –

+0

@NaveenKumar: в основном его же. –

+0

yup, я попробовал ваш, оба они одинаковы, но один сомневается, как мы избавимся от первого моментального моментального снимка. Значение равно нулю? 2014-12-08 15: 22: 01.536 Delibro [1699: 589610] моментальный снимок 2014 -12-08 15: 22: 01.538 Delibro [1699: 589610] *** - [NSMutableArray addObjectsFromArray:]: аргумент массива не является NSArray 2014-12-08 15: 22: 01.544 Delibro [1699: 589610] ** * Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «*** - [NSMutableArray addObjectsFromArray:]: аргумент массива не является NSArray ' *** Первый стек вызовов броска: (0x184db259c –

Смежные вопросы