Jump to content

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Photo
- - - - -

CoreData


  • Please log in to reply
3 replies to this topic

#1 murdok

murdok
  • 11 posts

Posted 19 March 2011 - 18:47

Witam, wie ktoś może jak zrobić, aby aplikacja uruchamiała się z kilkoma wpisami? Bo za każdym razem jak instaluje to nie ma żadnych danych. Dzięki.

#2 JKK

JKK
  • 411 posts
  • SkądOsolin

Posted 19 March 2011 - 19:27

Zrób bazę (wpisy) i odszukaj plik SQLite ze swojego symulatora. Potem zrób procedurę, która sprawdza czy jest już baza, jak nit to skopiuje tą Twoją gotową w miejsce standardowe.

Np. tak (przykład z sieci przerobiony do mojego projektu):

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    
    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }
   
	NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"EPP.sqlite"];

	NSFileManager *fileManager = [NSFileManager defaultManager];
	// If the expected store doesn't exist, copy the default store.
	if (![fileManager fileExistsAtPath:storePath]) {
		NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"EPP" ofType:@"sqlite"];
		if (defaultStorePath) {
			[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
		}
	}
	
    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"EPP.sqlite"]];
    
    NSError *error = nil;
    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;
}


#3 murdok

murdok
  • 11 posts

Posted 20 March 2011 - 21:39

Dzięki, ale nie zupełnie rozumiem. Wybacz, ale pierwszy raz korzystam z CoreData ;) Jak mam odszukać plik SQLite? A jeszcze takie pytanie, nie można zwyczajnie usuwać wpisy a późnij dodawać np. w didFinishLaunching?

#4 JKK

JKK
  • 411 posts
  • SkądOsolin

Posted 21 March 2011 - 15:11

Ad 1. W sowim Maczku na którym kodujesz i symulator odpalasz: ~/library/Application Support/iPhone Simulator/ i tu musisz odszukać swoją aplikację i jej teczkę Documents tam znajdziesz plik xxx.sglite. Możesz go nawet edytować (rozsądnie) lub podglądać czymś do edycji baz SQLite (ja używam darmowego SQLite Database Browser. W moim programie w symulatorze przygotowuję sobie dane jakie chcę mieć w defaultowej bazie i ją potem używam. Może można bardziej elegancko ale tak jest skutecznie. Ad 2. Można, też tak robiłem - ale to przedłuża czas odpalenia aplikacji i zależnie od danych często i objętość programu.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users