PFUser currentuser在NSObject子类中不可用

时间:2016-09-26 22:08:52

标签: ios objective-c parse-platform

我创建了一个自定义的NSObject子类,所以我可以调用像MyObject1 * shared = [GlobalObjects myObject1];在此处接受的答案中引用:where to store "global" objects in iOS

我已经设置了,并且它正确地进行了调用,但由于某种原因,它不允许我访问PFUser * currentUser = [PFUser currentUser],因为它返回null。在我调用GlobalObjects myObject1之前,我能够毫无问题地访问用户详细信息,但只要它跳转到我的子类,它就是null。我已经包含了Parse sdk并且没有错误,所以我无法弄清楚这里发生了什么。

任何人都有关于我可能做错的指导吗?

供参考:

初步观点:

currentUser = [PFUser currentUser];
NSLog(@"%@",currentUser); // Outputs correctly
PFObject *settings = [GlobalObjects getSettings];

·H

#import <Foundation/Foundation.h>
#import <Parse/Parse.h>

@interface GlobalObjects : NSObject

+(void)load;
+(PFObject*)getSettings;

@end

的.m

#import "GlobalObjects.h"
#import <Parse/Parse.h>

static PFObject* _getSettings = nil;

@implementation GlobalObjects

+(void)load {
    PFUser *currentUser = [PFUser currentUser];
    NSLog(@"%@",currentUser); // Returns null always (I need to get the user here)
}
+(PFObject*)getSettings {
    return _getSettings;
}

@end

1 个答案:

答案 0 :(得分:2)

至于我的问题 - 在+(void)加载方法中。从文档到+ [NSObject load] - 初始化顺序:

  1. 您链接到的任何框架中的所有初始值设定项。
  2. 图片中的所有+加载方法。
  3. 所有C ++静态初始化程序和C / C ++ 属性(构造函数)在您的映像中起作用。
  4. 链接到您的框架中的所有初始值设定项。
  5. 所以你试图在第2步获得PFUser实例,但Parse框架只能在第4步正确初始化。所以只需将你的调用从load方法转移到某个地方。