如何使用parse.com服务器iOS保存对象数组?

Iam使用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"]; 

    我得到一个例外,这是消息: –

    终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因:'PFObject值必须序列化为JSON'

    请帮助我,如何将我的歌曲数据以JSON格式发送到服务器。 谢谢。

使用Parse时,数组和字典只能包含可以序列化为JSON的对象。 它看起来好像self.songsArray包含不能自动转换为JSON的对象。 你有两个select – 使用与Parse兼容的对象,或者像在评论中build议的那样,制作你的歌曲PFObjects ,然后通过关系将它们与播放器相关联。

你可以尝试一下这些选项:

1)如果你想保存一个Parse对象数组,你可以使用下面的代码:

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

2)您可以创buildParse.com关系:

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

只保存objectId NSString

然后去检查,做一些像这样的花哨的东西。

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