忍者ブログ
[84] [83] [82] [81] [80] [79] [78] [76] [75] [74] [73
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


先月書いたcoredataありの時のフィル共有の追加メモ。

前回書いた分へのリンク

前回の最後に書いていた「バージョンアップでファイル共有に対応する」部分についてとりあえず対応が出来た。
やった事は、ものすごく単純な方法で問題なさそうであった。

手順として、以下のようにした。
1.データベースファイルの保存場所が、共有される場所にあるかのチェック
2.ファイルがある場合には、別の場所にファイル移動

当たり前の事をしただけだった。

実際のソースは以下のようにした。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }
    
    NSURL *oldStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Test.sqlite"];
    NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationSupportDirectory] stringByAppendingPathComponent: @"Test.sqlite"]];
    NSFileManager* fileManager = [NSFileManager defaultManager];
    NSError *error = nil;
    NSString *oldString = [oldStoreURL path];
    NSString *newString = [storeURL path];

    if([fileManager fileExistsAtPath:oldString])
    {
        if (![fileManager moveItemAtPath:oldString toPath:newString error:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }

        NSString *oldString2 = [oldString stringByAppendingString:@"-shm"];
        NSString *newString2 = [newString stringByAppendingString:@"-shm"];
        if (![fileManager moveItemAtPath:oldString2 toPath:newString2 error:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }

        oldString2 = [oldString stringByAppendingString:@"-wal"];
        newString2 = [newString stringByAppendingString:@"-wal"];
        if (![fileManager moveItemAtPath:oldString2 toPath:newString2 error:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }    
    
    return _persistentStoreCoordinator;
}

「AppDelegate.m」を修正。
元々のファイルの保存先を指定して、ファイルの有無チェックを行い、ファイルがあった場合のみファイル移動を行う。
このとき、coredataのデータベースファイルの3つを全て移動対象にする。

たったこれだけの、単純な実装ですんでよかった。


拍手[0回]

PR

この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)

リリース済みアプリ

Silmuvide


PseudoRPT


うつすと!


ChronologyMaker


LASI


3行日記


単位計算機


Marking Map Plus


交通費管理


交通費計算リスト


Markin Map


SheepSleepSheep


RootCalculator


元号変換


PieChart


MeasureShooting


SimpleMapCreator



Applivのレビュー記事
http://app-liv.jp/713163900/

ゆびてんじ


PR



Copyright ©   marble seijin の開発日記   All Rights Reserved
Design by MMIT simple_plain Powered by NINJA TOOLS
忍者ブログ [PR]