2013-04-29 6 views
5

Iam, использующий сервер parse.com для отправки и получения данных приложения iOS. Я хочу сохранить список песен, и каждая песня имеет следующие свойства (название, исполнитель, альбом). Мой фрагмент кода находится здесь;Как сохранить массив объектов с помощью сервера parse.com iOS?

 -(IBAction)saveSongsData:(id)sender { 

     PFObject *newPlayer = [PFObject objectWithClassName:@"Players"]; 

     /*[newPlayer addObjectsFromArray:self.songsArrray forKey:@"songs"]; 
     here i got the exception, if i uncomment it*/ 

     [newPlayer setObject:self.txtPlayerName.text forKey:@"playerName"]; 
     [newPlayer setObject:self.txtPlayerDesc.text forKey:@"playerDescription"]; 
     [newPlayer setObject:self.txtPlayerPass.text forKey:@"playerPassword"]; 

     NSString *objectId = [newPlayer objectId]; 
     [[NSUserDefaults standardUserDefaults]setObject:objectId forKey:@"id"]; 

     [newPlayer saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
      if (!error) { 
      } 
      else { 
      } 
     }]; 
     } 

Где self.songsArray - массив объектов песен, имеющих следующие свойства;

  • название, исполнитель, альбом .

    Но когда я пытаюсь сохранить данные своих песен, используя эту строку кода.

    [newPlayer addObjectsFromArray:self.songsArrray forKey:@"songs"]; 
    

    я получил исключение и это сообщение: -

    Нагрузочного приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «значение PFObject должно быть сериализациями в JSON»

    Пожалуйста, помогите мне , как отправить данные моих песен на сервер в формате JSON. Спасибо.

+0

Вам не нужно сохранять массив? [сохранение новогоPlayer]; Я думаю, что вы делаете это с помощью синтаксического анализа. – STANGMMX

+0

Если у меня есть, например, 7 песен в self.songsArray. Затем, как сериализовать эти данные в формате JSON и сохранить эти данные с помощью PFObject? Или существует ли другая возможность? –

+0

Вы проверили свой REST API? https://parse.com/docs/rest#objects-classes – STANGMMX

ответ

5

При работе с Parse ваши массивы и словари могут содержать только объекты, которые могут быть сериализованы для JSON. Похоже, что self.songsArray содержит объекты, которые нельзя автоматически преобразовать в JSON. У вас есть два варианта - использовать объекты, совместимые с Parse, или, как кто-то предложил в комментариях, сделать ваши песни PFObjects, а затем связать их с игроком через отношения.

+1

Я делаю вот так, и теперь это прекрасно работает :) PFObject * songObject = [PFObject objectWithClassName: @ "Songs"]; [songObject setObject: songs.title forKey: @ "title"]; [songObject setObject: songs.album forKey: @ "album"]; [songObject setObject: songs.artist forKey: @ "artist"]; [songObject save]; Благодарю. –

9

Вы можете попробовать один эти варианты:

1) Если вы хотите сохранить массив разбора объектов, которые вы можете использовать следующее:

[PFObject saveAllInBackground: self.songsArray block: YOUR_BLOCK]; 

2) Вы можете создать Parse.com отношения:

PFObject *newPlayer ... 
PFRelation *relation = [newPlayer relationforKey:@"songs"]; 
[relation addObject:song]; // add as many songs as you want. 
[newPlayer saveInBackground]; 
0

Просто сохраните объектИндекс NSString.

Затем, чтобы отступить, сделайте некоторые причудливые вещи, подобные этому.

[query2 whereKey:PF_CHAT_SETID equalTo:[PFObject objectWithoutDataWithClassName:PF_SET_CLASS_NAME objectId:setId_]];