5

我正在使用 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 格式将我的歌曲数据发送到服务器。谢谢。

4

3 回答 3

9

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

1)如果要保存 Parse Objects 数组,可以使用以下命令:

[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];
于 2013-05-02T07:15:18.010 回答
5

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

于 2013-04-29T15:18:13.903 回答
0

只需保存 objectId NSString

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

[query2 whereKey:PF_CHAT_SETID equalTo:[PFObject objectWithoutDataWithClassName:PF_SET_CLASS_NAME objectId:setId_]];
于 2015-01-25T15:16:42.800 回答