场景=我有一个PFQueryTableViewController,它将显示用户彼此发送的消息。为了在对话之间创建关系,我将一个字符串保存到名为"messageID“的对象中。我希望"messageID“是first message的"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上的键或值使用零。值使用NSNull。”
如果有人能为我指明正确的方向,让我做到这一点,我会爱你的。
发布于 2014-07-10 22:53:39
错误消息告诉您正在发生什么-您正在尝试在messageID键中存储一个零值,这是不允许的。
发生这种情况的原因是,只有在保存对象之后才分配objectId --新分配的对象还没有值。
因此,您可以等到saveInBackgroundWithBlock完成后再检索objectId,也可以使用另一个ID。
我建议您将messageID列更改为字符串并使用UUID。然后,您可以在保存会话中的第一条消息之前创建一个新的UUID。您可以使用
NSString *messageID=[[NSUUID UUID] UUIDString];https://stackoverflow.com/questions/24686179
复制相似问题