2015-04-17 1 views
1

Я получаю этот объект JSON с моей веб-службыКак назначить значение строке JSON?

0: { 
Username: "John" 
Password: "12345" 
Position: "Admin" 
Job: "Developer" 
ResourceJobId: 1 
} 

При попытке присвоить значение, например, Имя пользователя JSON строки, я получаю смысловую ошибку:

id obj = [NSJSONSerialization JSONObjectWithData:data 
               options:NSJSONReadingAllowFragments 
                error:&error]; 
      for (NSDictionary *dictionary in array) { 
       NSString *usernameString = @""; 
//this line of code gives me an error: Expression is not assignable    
[dictionary objectForKey:@"Username"] = usernameString ; 

Я знаю, как получить объект JSON с классом NSJSONSerialization, но моей целью является назначение значения @ "" объекту JSON. Итак, как я могу присвоить значение @ "" строке имени пользователя JSON?

+2

use [словарь setValue @ "" forKey @ ""] – Hanuman

+0

Я не вижу «массив» в любом месте, так что это не ваш полный код. Покажите нам свой код _complete_. Я также не знаю, что вы подразумеваете под «семантической ошибкой». Вы имеете в виду сообщение об ошибке компилятором? Какое сообщение об ошибке? Лучше всего копировать и вставлять. – gnasher729

+0

таким образом, я получаю эту ошибку [__NSCFDictionary setObject: forKey:]: метод мутирования, отправленный в неизменяемый объект ' – junko76

ответ

1

В то время как вы пытаетесь принес dictionary из array. это не изменяемый словарь, поэтому вам нужно создать NSMutableDictionary, получая данные от Array. следующий код поможет вам изменить username.

for (NSMutableDictionary *dictionary in array) 
{ 
    NSMutableDictionary* dictTemp = [NSMutableDictionary dictionaryWithDictionary:dictionary]; 

    [dictTemp setObject:usernameString [email protected]"Username"]; 

    [_arrayList replaceObjectAtIndex:index withObject:dictTemp]; 
} 
+0

@ junko76, дайте мне знать, что вы хотите что-то еще. –

+0

Спасибо! Он работает – junko76

+0

приветственный чувак ... –

0

Ну ваша операция присваивания записывается неправильно, это должно быть действительно так:

  • Если вам нужно получить значение из словаря

    usernameString = [dictionary objectForKey:@"Username"]; 
    
  • Если вы хотите установить значение в вашем словаре, в первую очередь, ваш словарь должен быть NSMutableDictionary

    [dictionary setObject:usernameString forKey:@"Username"]; 
    
+0

Я хочу установить значение для моего словаря – junko76

0
NSData *data = [NSData dataWithContentsOfURL:url]; 
     NSError *error; 
     id obj = [NSJSONSerialization JSONObjectWithData:data 
               options:NSJSONReadingAllowFragments 
                error:&error]; 

     if(!error && [obj isKindOfClass:[NSArray class]]){ 
      NSArray *array = (NSArray *)obj; 
      Booking *booking = nil; 
      for (NSMutableDictionary *dictionary in array) { 
       NSString *usernameString = @""; 
//this line of code gives me an error: Expression is not assignable    
[dictionary objectForKey:@"Username"] = usernameString; 

Да, это ошибка компилятора

0

Для изменения значения необходимо иметь переменную mutabledictionary. Попробуйте это

for (NSDictionary *dictionary in array) { 
    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:dictionary]; 
    NSString *usernameString = @"";  
    [mutableDictionary setValue:@"" forKey:usernameString]; 
}  
0

Даже ответы правильные, я хочу добавить, что вам не обязательно делать это самостоятельно. NSJSONSerialization уже имеет решение для этого. Просто передайте как опции один из них:

NSJSONReadingMutableContainers = (1UL << 0), 
NSJSONReadingMutableLeaves = (1UL << 1), 

при чтении JSON.

+0

Я хотел добавить один голос вообще, но я новичок в satckoverflow, поэтому мне не разрешено это делать. Спасибо – junko76

+0

Нет проблем, я не здесь для репутации, но для помощи. Пожалуйста. –