ここでは、plistを使用してコアデータストアをプリロードする簡単な方法があります。
辞書の配列を含むプロパティリストを作成します。各辞書のキーを管理対象オブジェクトのキーに対応させます。
alt text http://www.freeimagehosting.net/uploads/b0b1909e81.png
次に、このメソッドを初めて呼び出すアプリが起動します:
- (void)loadDataFromPropertyList {
NSString *path = [[NSBundle mainBundle] pathForResource:@"someFile" ofType:@"plist"];
NSArray *items = [NSArray arrayWithContentsOfFile:path];
NSManagedObjectContext *ctx = self.managedObjectContext;
for (NSDictionary *dict in items) {
NSManagedObject *m = [NSEntityDescription insertNewObjectForEntityForName:@"TheNameOfYourEntity" inManagedObjectContext:ctx];
[m setValuesForKeysWithDictionary:dict];
}
NSError *err = nil;
[ctx save:&err];
if (err != nil) {
NSLog(@"error saving managed object context: %@", err);
}
}
コールloadDataFromPropertyList
アプリはapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
の実装に次のコードを含むことによって起動する最初の時間:
を
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
{
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self loadDataFromPropertyList];
}
私は間違った質問とは考えていません。 CoreDataは*基礎となる*ストレージ用にSQLiteを使用しますが、SQLite自体に対するインタフェースはありません。代わりに、CoreDataの力はそのクラスとメソッドから派生しています。たとえば、 'NSFetchedResultsController'を' UITableView'とともに使用すると、必要に応じて効率的にディスクからデータを読み込み、それに従ってメモリを管理するのに役立ちます。ストレートSQLiteを使用する場合、あなたは本質的にこれを行う必要があります。 – jbrennan
コアデータを使用すると、SQLite APIはどこに移動しますか?私が知る限り、それはまだそこにある。 –
私はすぐに両方にアクセスできるかどうかは気にしません(おそらく、Core Dataでオブジェクトを管理することは悪い考えです)。私は1つを使いたいと思うし、どちらが最善であるかを知る必要があります。 – Christian