Objective c parse.com从currentUser获取指针数据

Objective c parse.com从currentUser获取指针数据,objective-c,parse-platform,Objective C,Parse Platform,我在PFUser中有一个指针键,我试图检索它指向的对象。我看过很多关于查询它的例子,但不需要这样做,因为parse有fetch方法,它是PFUser类的指针,所以我使用以下方法: PFObject *menu = [[[PFUser currentUser] objectForKey:@"menuID"] fetchIfNeeded]; 我知道我的当前用户在该键中有一个被指向的对象,但我始终得到一个空菜单对象,默认情况下,currentUser没有任何自定义添加的数据列。您需要获取用户以下载该

我在PFUser中有一个指针键,我试图检索它指向的对象。我看过很多关于查询它的例子,但不需要这样做,因为parse有fetch方法,它是PFUser类的指针,所以我使用以下方法:

PFObject *menu = [[[PFUser currentUser] objectForKey:@"menuID"] fetchIfNeeded];
我知道我的当前用户在该键中有一个被指向的对象,但我始终得到一个空菜单对象,默认情况下,currentUser没有任何自定义添加的数据列。您需要获取用户以下载该数据,然后您可以在本地使用它


或者,您可以使用云代码保存网络请求。

Wain说您需要获取当前用户是正确的。但是,您必须记住,如果您想使用fetchInBackground,我们将使用多个线程。要保留单个线程,只需使用[[PFUser currentUser]fetch],但请记住,当internet连接不好时,这可能会导致用户挂起或阻塞。下面是如何更有效地使用此功能的示例。fetch与fetchInBackground的问题相同,对于菜单,我们也必须获取菜单,因为它是指针,因此currentUser将只获取指针,而不是整个对象

[[PFUser currentUser] fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) {
    if(!error){
        PFObject *menu = object[@"menuID"];
        [menu fetch];
        // Execute any code that needs the menu here, or store it in your viewController (or other class variable) if you need to save it for later  

        // Alternately, you could use this:
        dispatch_async(dispatch_get_main_queue(), ^{
            [menu fetchInBackgroundWithBlock:^(PFObject *fetchedMenu, NSError *menuError) {
                if(!menuError){
                    // Execute any code that needs the menu here, or store it
                } else {
                    NSLog(@"%@", menuError);
                }
            }];
        });
    } else {
        NSLog(@"%@", error);
    }
}];

我只是做[[pfuser currentuser]fetch]?所以现在我做了pfuser*user=pfuser*[[pfuser currentuser]fetchInBackGround];然后为了测试它,我检查:if[user objectForKey:@menuID]!=NULL{/}但是我得到了一个错误-[BFTask objectForKey:]:无法识别的选择器被发送到Instance你是否按顺序运行这两个?fetchInBackground在一个单独的线程上运行,因此在该获取完成之前,您不能实际使用currentUser对象。尝试使用回调并在回调中设置菜单项。非常感谢你们两位,非常有用的解释和示例