场景=我有一个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/