【问题标题】:How to save array of objects using parse.com server iOS?如何使用 parse.com 服务器 iOS 保存对象数组?
【发布时间】:2015-01-25 23:16:42
【问题描述】:

我正在使用 parse.com 服务器来发送和检索我的 iOS 应用数据。我想保存歌曲列表,每首歌曲都有以下属性(标题、艺术家、专辑)。我的代码 sn-p 在这里;

        -(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 格式发送到服务器。 谢谢。

【问题讨论】:

  • 不需要保存数组吗? [新玩家保存];我认为这是您使用 parse 的方式。
  • 如果我在 self.songsArray 中有 7 首歌曲。那么如何以 JSON 格式序列化该数据并使用 PFObject 保存该数据?或者还有另一种可能吗?
  • 你检查过他们的 REST API 吗? parse.com/docs/rest#objects-classes
  • 您可能应该将歌曲对象设为实际的 PFObject,它们是解析数据库的一部分。然后将歌曲与播放器关联(通过 ID 或关系)。
  • 感谢@STANGMMX,它帮助解决了我的问题。

标签: ios parse-platform


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我正在这样做,现在它工作正常:) PFObject *songObject = [PFObject objectWithClassName:@"Songs"]; [songObject setObject:songs.title forKey:@"title"]; [songObject setObject:songs.album forKey:@"album"]; [songObject setObject:songs.artist forKey:@"artist"]; [歌曲对象保存];谢谢。
    【解决方案3】:

    只需保存 objectId NSString

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      相关资源
      最近更新 更多