2016-09-26 38 views
0

我创建了一个自定义NSObject子类,因此我可以调用类似于MyObject1 * shared = [GlobalObjects myObject1];作为公认的答案在这里引用:where to store "global" objects in iOSPFUser currentuser在NSObject子类中不可用

我把它设置,它正确地进行调用,但由于某种原因它不是让我来访问PFUser * currentUser = [PFUser currentUser],因为它的返回null。在我调用GlobalObjects myObject1之前,我可以毫无问题地访问用户的详细信息,但只要它跳到我的子类,它就是空的。我已经包含了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 

回答

2

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

  1. 您链接到的任何框架中的所有初始化器。
  2. 图像中的所有加载方法。
  3. 图像中的所有C++静态初始化程序和C/C++ 属性(构造函数)函数。
  4. 链接到您的框架中的所有初始值设定项。

因此,您试图在第2步获取PFUser实例,但Parse框架将仅在第4步才能正确初始化。因此,只需将您的调用从load方法移至某处。

相关问题