アプリの起動時にバックグラウンド スレッドで呼び出される FacebookManager シングルトンを作成しました。Facebookマネージャー、シングルトン、アプリなどですべてがうまく機能しています。だから私がやりたいことは、NSKeyedArchiver を使用して facebookManager とそのすべての辞書を保存し、起動時に Facebook データがバックグラウンドで更新されている間にアプリがナビゲート可能なインターフェイスを持つようにすることです。わかる?
すべて FacebookManager.m 内で、最初に、マネージャーがフレンド辞書の更新などを完了すると、データを保存するメソッドを呼び出します。
- (BOOL)saveFacebookData
{
// returns success or failure
NSString *path = [self archivePath]; // just a helper method
return [NSKeyedArchiver archiveRootObject:self toFile:path];
}
次に、初期化でこれを試していますが、うまくいかないようです。:
-(id)init
{
self = [super init];
NSString *path = [self archivePath];
self = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
// If the manager hadn't been saved previously, create a new new one
if (!self) {
if (_idsByNameDict == nil) {
_idsByNameDict = [[NSMutableDictionary alloc] init];
}
if (_photosByNameDict == nil) {
_photosByNameDict = [[NSMutableDictionary alloc] init];
}
if (_installedByNameDict == nil) {
_installedByNameDict = [[NSMutableDictionary alloc] init];
}
if (_allFriendsArray == nil) {
_allFriendsArray = [[NSArray alloc] init];
}
basicPermissions = NO;
extendedPermissions = NO;
// Create synchronous dispatch queue for all facebook activity
if (_facebookUpdateQueue == nil) {
_facebookUpdateQueue = dispatch_queue_create("com.facebookUpdateQueue", NULL);
}
}
私の一般的な戦略は適切だと思いますが、初期化中にアーカイブされたバージョンのマネージャーを実際に取得する方法につまずいています! 何かアドバイス?