0

アプリの起動時にバックグラウンド スレッドで呼び出される 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);
        }

    }

私の一般的な戦略は適切だと思いますが、初期化中にアーカイブされたバージョンのマネージャーを実際に取得する方法につまずいています! 何かアドバイス?

4

1 に答える 1