用户登录时创建新表的问题

您好,我是一名游戏开发者。在使用贵公司的leancloud时发现了一些疑问,可否帮忙解答一下?
1.在使用第三方登录时_User表中会对应的给用户生成一个objectId,但是使用"AVObject objectWithClassName"方法创建一个新表的时候又会生成一个objectId,导致我无法以登录时_User的objectId去获取对应新建的表中用户的数据。而且每次调用"AVObject objectWithClassName"都会创建一个新的objectId,objectWithClassName的第二个参数是可以传入objectId的,但是我想用_User表中的objectId来作为用户的唯一ID,请问有方法可以解决吗?
ps:objectWithClassName当传入objectId时将无法创建新表或者无法在表中添加新的objectId。
万分感谢。

额,那麻烦问一下,_User和AVObject这两个能关联起来吗?文档上面说"云端会根据有没有 objectId 来决定是新增还是更新一个对象",但是我使用AVObject *todo =[AVObject objectWithClassName:@"className" objectId:@"objcetid"]更新玩家的数据会提示:error = "Could not find object by id 'objcetid' for class 'className'.";没有新增用户。测试objcetid存在时是没得问题的。请问这个要怎么处理?谢谢

_User 和 AVObject这两个能关联起来吗?

这个问题和下面您的操作是两回事。关联数据请参考数据模型设计指南:https://leancloud.cn/docs/relation-guide.html

更新玩家的数据会提示:error = "Could not find object by id 'objcetid' for class 'className'."

更新玩家数据时应当更新 _User 表而不是 className 表。

建议您先按照存储文档中的示例亲自实践,实践完成后就明白具体怎么回事了。

您好,文档说会根据objectid在className是否存在而去新增或者更新用户的数据,但是我现在可以更新但是无法通过objectid去新增一个用户,请问是需要什么权限吗?麻烦了哈。

无法通过 objectId 新增用户,只能通过 AVUser 去注册/匿名登录/第三方登录。

文档原文是「云端会根据有没有 objectId 来决定是新增还是更新一个对象」,这里「有没有 objectId」是指本地 AVObject 有没有 objectId 这个 key/属性,而不是说可以通过保存一个自己指定的云端不存在的 objectId 来新增记录。

并不存在自己指定 objectId 来新增一个 AVObject 的方法,同理,也无法指定 objectId 来新增 AVUser。objectId 始终是云端分配的。 (使用控制台导入数据的特殊情况除外。)

如果是想要在属于另一个 Class 的 AVObject 中关联用户的话,可以存一个 Pointer,指向对应的 AVUser。参见 存储开发指南的 Pointer 部分

好的,谢谢两位大佬的回复。非常感谢