如何在 iOS 中保存 PFObject 列表?

Posted

技术标签:

【中文标题】如何在 iOS 中保存 PFObject 列表?【英文标题】:How to save a list of PFObject in iOS? 【发布时间】:2014-04-13 03:20:19 【问题描述】:

我正在使用 Parse.com 服务作为我的云在 ios 上工作。

我当前的任务是尝试从 Facebook 检索朋友列表,然后将该列表保存到解析云。

我可以使用 parse.com 的示例/教程为 PFObject 保存一个 PFObject,但是当我尝试保存我的对象列表时它不起作用。

那么你能解释一下我的原因吗?在我的情况下,解决方案是什么?

我的代码:

for (NSDictionary<FBGraphUser>* friend_ in friends) 
                                                NSLog(@"I have a friend named %@ with id %@", friend_.name, friend_.id);
                                                PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
                                                NSLog(@"Add ID");
                                                gameScore[@"id"] = friend_.id;
                                                NSLog(@"Name");
                                                gameScore[@"name"] = friend_.name;
                                                NSLog(@"Birthday");
                                                gameScore[@"birthday"] = friend_.birthday;
                                                [gameScore saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
                                                    if (!error) 
                                                        NSLog(@"Sample sending completed");
                                                    
                                                ];

                                            

【问题讨论】:

具体是什么不起作用?你收到 Parse 的错误了吗? 什么都没有。我也尝试检查数据浏览器,但没有数据发送到那里 saveInBackgroundWithBlock 返回成功还是错误? 感谢 Brandon,它甚至什么都不返回 【参考方案1】:

在 Parse 中使用多个请求保存多个对象时,我也遇到了这个问题。您应该尝试以下请求,它允许您通过单个请求保存 PFObject * 数组:

+ (void)saveAllInBackground:(NSArray *)objects block:(PFBooleanResultBlock)block

【讨论】:

抱歉,我找不到 saveAllInBackground 方法? saveAllInBackground 是一个类方法(你可以用 +(void) 代替 -(void)),它的文档在这里:parse.com/docs/ios/api/Classes/PFObject.html#//api/name/…: -- 像这样称呼它:[ PFObject saveAllInBackground:@[object1,object2] block:^(BOOL 成功, NSError *error) /*完成代码 */ ];【参考方案2】:
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore”];
[gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
[gameScore setObject:@"Sean Plott" forKey:@"playerName"];
[gameScore setObject:[NSNumber numberWithBool:NO] forKey:@"cheatMode"];
[gameScore save];

【讨论】:

以上是关于如何在 iOS 中保存 PFObject 列表?的主要内容,如果未能解决你的问题,请参考以下文章

最终使用 PFFile(解析本地数据存储)保存在 PFObject 上?

在 iOS 7 中从 Parse PFObject 中提取数据

将照片保存到iOS相册,不要全部保存

Swift - PFObject 从保存回调而不是布尔返回自身

保存 PFObject NSCoding

在 Swift 中子类化 PFObject