2013-04-29 7 views
5

Używam serwera parse.com do wysyłania i pobierania danych aplikacji na iOS. Chcę zapisać listę utworów, a każda piosenka ma następujące właściwości (tytuł, wykonawca, album). Mój fragment kodu jest tutaj;Jak zapisać tablicę obiektów za pomocą serwera 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 { 
      } 
     }]; 
     } 

Gdzie self.songsArray jest tablicą obiektów utworów posiadających następujące właściwości;

  • tytuł, artysta, album.

    Ale kiedy próbuję zapisać moje utwory danych za pomocą tego wiersza kodu.

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

    mam wyjątek i to jest komunikat: -

    Zakończenie aplikację spowodowane nieprzechwyconego wyjątku 'NSInvalidArgumentException', powód: 'Wartości PFObject musi być możliwy do serializacji do JSON'

    Proszę mi pomóc , jak przesłać dane moich piosenek na serwer w formacie JSON. Dzięki.

+0

Nie musisz zapisywać tablicy? [zapis nowego odtwarzacza]; Myślę, że to jak to robisz z analizą. – STANGMMX

+0

Jeśli mam na przykład 7 utworów w self.songsArray. Następnie jak serializować te dane w formacie JSON i zapisać te dane za pomocą PFObject? LUB czy istnieje inna możliwość? –

+0

Czy wypróbowałeś ich REST API? https://parse.com/docs/rest#objects-classes – STANGMMX

Odpowiedz

5

Podczas pracy z analizą składni twoje tablice i słowniki mogą zawierać tylko obiekty, które mogą być serializowane do JSON. Wygląda na to, że self.songsArray zawiera obiekty, które nie mogą być automatycznie konwertowane na JSON. Masz dwie opcje - użyj obiektów zgodnych z Parse lub, jak ktoś zasugerował w komentarzach, twórz piosenki PFObjects, a następnie kojarz je z graczem za pośrednictwem relacji.

+1

Robię tak i teraz działa dobrze :) 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]; Dzięki. –

9

Można wypróbować jedną z tych opcji:

1) Jeśli chcesz zapisać tablicę Parse Przedmioty można użyć następujących:

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

2) Można tworzyć relacje Parse.com:

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

Po prostu zapisz obiekt ObjectID NSString.

Następnie, aby się cofnąć, zrób coś takiego.

[query2 whereKey:PF_CHAT_SETID equalTo:[PFObject objectWithoutDataWithClassName:PF_SET_CLASS_NAME objectId:setId_]]; 
Powiązane problemy