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

如何使用parse.com服务器iOS保存对象数组?,ios,parse-platform,Ios,Parse Platform,Iam使用parse.com服务器发送和检索我的iOS应用程序数据。我想保存歌曲列表,每首歌曲都有以下属性(标题、艺术家、专辑)。我的代码片段在这里 -(IBAction)saveSongsData:(id)sender { PFObject *newPlayer = [PFObject objectWithClassName:@"Players"]; /*[newPlayer addObjectsFromArray:self.songsArr

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
是具有以下属性的songs对象数组

  • 头衔, 艺术家, 相册

    但是当我试图用这行代码保存我的歌曲数据时

        [newPlayer addObjectsFromArray:self.songsArrray forKey:@"songs"];
    
    我遇到了一个异常,下面是消息:-

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

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


使用Parse时,数组和字典只能包含可以序列化为JSON的对象。它看起来好像
self.songsArray
包含无法自动转换为JSON的对象。您有两个选项-使用与Parse兼容的对象,或者,如有人在评论中所建议的,制作您的歌曲
PFObjects
,然后通过关系将它们与播放器关联。

您可以尝试以下选项之一:

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];

只需保存objectId
NSString

然后再复习,做一些像这样的有趣的事情

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

你不需要保存数组吗?[新玩家保存];我想这就是解析的方法。例如,如果我有self.songsArray中的7首歌曲。那么,如何将该数据序列化为JSON格式,并使用PFObject保存该数据?或者还有其他可能性吗?您检查过他们的RESTAPI了吗?您可能应该将songs对象设置为实际的PFObjects,这是parse DB的一部分。然后将歌曲与播放器关联(通过ID或关系)。谢谢@STANGMMX,它帮助解决了我的问题。我正在这样做,现在工作正常:)PFObject*songObject=[PFObject objectWithClassName:@“songs”];[songObject setObject:songs.title-forKey:@“title”];[songObject setObject:songs.album forKey:@“album”];[songObject setObject:songs.artist-forKey:@“artist”];[对象保存];谢谢