ios - 解析iOS SDK:如何在创建PFObject时复制objectId

标签 ios objective-c parse-platform

场景=我有一个PFQueryTableViewController,它将显示用户彼此发送的消息。为了在对话之间建立关系,我将一个字符串保存到名为“messageID”的对象。我希望“messageID”是的第一个消息的“objectId”的精确副本,以便使对话具有按时间顺序排列的意义,我将从“createdAt”边界中“orderByAscending”。

问题=如何设置(复制)第一条消息中的“objectId”?

我要尝试的想法是...

PFObject *message = [PFObject objectWithClassName:@"Message"];
[message setObject:[NSString stringWithFormat:@"%@", self.messageTextView.text] forKey:@"message"];
[message setObject:[PFUser currentUser][@"userID"] forKey:@"senderID"];
[message setObject:self.selectedFriendID forKey:@"receiverID"];

//RIGHT HERE
[message setObject:message.objectId forKey:@"messageID"];

[message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {

}

这样的想法是,一旦在PFQueryTableViewController中查询的所有消息都将全部归为同一类,因为它们都具有相同的“messageID”。

这给我一个错误“不能为PFObject上的键或值使用nil。将NSNull用作值。

如果有人能指出我正确的方向,那么我可以做到这一点,我会爱你的。

最佳答案

错误消息告诉您正在发生的事情-您正在尝试在messageID键中存储nil值,这是不允许的。

发生这种情况的原因是,仅在保存对象后才分配objectId-新分配的对象尚无值。

因此,您可以等待saveInBackgroundWithBlock完成并检索objectId,或者可以使用备用ID。

我建议您将messageID列更改为String并使用UUID。然后,您可以在 session 中保存第一条消息之前创建新的UUID。您可以使用

NSString *messageID=[[NSUUID UUID] UUIDString];

关于ios - 解析iOS SDK:如何在创建PFObject时复制objectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24686179/

相关文章:

swift - 使用 block 解析获取数据,未将值分配给范围内的变量

ios - 如何以编程方式取消选择静态单元格 iOS

iphone - 实现在大型项目中到处使用的自己的功能的最简单方法是什么?

objective-c - 创建文件路径 :contents:attributes storing a NSString

objective-c - 在 watch os 2 运行时更新 wkinterfacecontroller 的方法

javascript - 如何使用 Parse.com JavaScript SDK 上传图像?

javascript - 如何在 Parse 中获取对象和该对象的特定关系?

iOS MKMapSnapshotter 完成 block 并不总是被调用

ios - NSUserDefault 自定义对象错误 - "array cannot be bridged from Objective-C"

ios - setNeedsLayout 与 setNeedsUpdateConstraints 和 layoutIfNeeded 与 updateConstraintsIfNeeded