2016-09-26 64 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方法移至某處。

相關問題