2016-09-26 6 views
0

カスタムNSObjectサブクラスを作成したので、MyObject1 * shared = [GlobalObjects myObject1]のように呼び出すことができました。 where to store "global" objects in iOSNSObjectサブクラスでPFUserカレントユーザが利用できない

私はそれを正しく設定していますが、何らかの理由で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 

答えて

2

- in +(void)ロードメソッド。ドキュメントから+ [NSObject load]まで - 初期化の順番:

  1. リンク先のフレームワーク内のすべての初期化子。
  2. 画像のすべての+読み込みメソッド。
  3. すべてのC++静的初期化子とC/C++ 属性(イメージのコンストラクタ)関数。
  4. あなたにリンクするフレームワーク内のすべてのイニシャライザ。

したがって、手順2でPFUserインスタンスを取得しようとしていますが、構文解析フレームワークは手順4でのみ適切に初期化されます。したがって、ロードメソッドからどこかに呼び出しを移動してください。

関連する問題