场景=我有一个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作为值。
如果有人能指出我正确的方向,那么我可以做到这一点,我会爱你的。
错误消息告诉您正在发生的事情-您正在尝试将nil值存储在messageID
密钥中,这是不允许的。
发生这种情况的原因objectId
是仅在保存对象后才分配-新分配的对象尚无值。
因此,您可以等待saveInBackgroundWithBlock
完成,然后检索objectId,也可以使用备用ID。
我建议您将messageID
列更改为字符串并使用UUID。然后,您可以在将第一条消息保存在对话中之前创建一个新的UUID。您可以使用
NSString *messageID=[[NSUUID UUID] UUIDString];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句