2013-08-27 24 views
0

我现在明白了,谢谢@dbarthelemy。但是这里是我的代码现在我收到的没有错误/终止“结果匹配查询”:如何将信息添加到PFObject而不创建全新的信息?

- (IBAction)createGroup:(id)sender { 
    PFObject *message = [PFObject objectWithClassName:@"Messages"]; 
    [message setObject:self.recipients forKey:@"recipientIds"]; 
    [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (error) { 
      NSLog(@"Error %@ %@", error, [error userInfo]); 
     } 
     else [self performSegueWithIdentifier:@"showDate" sender:self]; 
    }]; 
} 

然后第二控制器上:

PFQuery *message = [PFQuery queryWithClassName:@"Message"]; 
      [message getObjectInBackgroundWithId:@"recipientIds" block:^(PFObject  *message, NSError *error) { 
       [message setObject:file forKey:@"file"]; 
       [message setObject:fileType forKey:@"fileType"]; 
       [message setObject:[[PFUser currentUser] objectId] forKey:@"senderId"]; 
       [message setObject:[[PFUser currentUser] username] forKey:@"senderName"]; 
       [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
+0

请务必在Parse论坛上提出这个问题,如果您还没有这样做 – jsetting32

回答

0

在createGroup:方法,请确保使用其中一种保存方法将PFObject保存为Parse(例如saveInBackgroundWithBlock :)。

- (IBAction)createGroup:(id)sender { 
PFObject *message = [PFObject objectWithClassName:@"Message"]; 
[message setObject:self.recipients forKey:@"recipientIds"]; 
[message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 

那么跟你分开的viewController类共享PFObject(使用属性),然后设置附加属性PFObject使用该指针(而不是使用objectWithClassName :)创建一个新的PFObject。 设置了其他属性后,不要忘记保存更新的PFObject。

[self.message setObject:file forKey:@"file"]; 
[self.message setObject:fileType forKey:@"fileType"]; 
[self.message setObject:[[PFUser currentUser] objectId] forKey:@"senderId"]; 
[self.message setObject:[[PFUser currentUser] username] forKey:@"senderName"]; 
[self.message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 

注意:如果你不能可靠地共享各种视图控制器之间的PFObject指针,您可以解析服务器去取回你的对象上执行PFQuery(假设你可以建立适当的查询)。

+0

我已更新我的上述代码以显示我当前的状态/问题。感谢您的帮助@dbarthelemy –

+0

您无法使用getObjectInBackgroundWithId:根据自定义键(recipientIds)检索PFObject。相反,您应该使用whereKey:equalTo:方法(假定self.recipients不是集合)与getFirstObject方法结合使用。 请注意,为了更清晰起见,您可以用不同的名称命名PFQuery实例(例如myQuery),并确保您为集合保留's',而不是对象或键名。 – dbarthelemy

+0

它有助于解决您的问题吗? – dbarthelemy