2013-04-29 16 views
5

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

アレイを保存する必要はありませんか? [newPlayer save];私はあなたがそれをパーズでどうやって行うのかと思います。 – STANGMMX

+0

私は、例えば、self.songsArrayの7曲がある場合。次に、そのデータをJSON形式でシリアル化し、PFObjectを使用してそのデータを保存する方法はありますか?別の可能性はありますか? –

+0

REST APIをチェックアウトしましたか? https://parse.com/docs/rest#objects-classes – STANGMMX

答えて

5

構文解析では、配列と辞書には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つのこれらのオプションは試みることができる:あなたがパースの配列を保存したい場合は、以下を使用することができますオブジェクト

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

オブジェクトIDを保存するだけです。

次に、このような魅力的なものを習得してください。

[query2 whereKey:PF_CHAT_SETID equalTo:[PFObject objectWithoutDataWithClassName:PF_SET_CLASS_NAME objectId:setId_]]; 
関連する問題