ios - Coredata database prepopulation is not filled -
i'm trying prepopulate coredata database sqlite file, don't understand why database not filled. sqlite file filled data need , added in bundle ressources.
here persistentstorecoordinator method int appdelegate :
- (nspersistentstorecoordinator *)persistentstorecoordinator { if (persistentstorecoordinator != nil) { return persistentstorecoordinator; } nsstring *storepath = [[self applicationdocumentsdirectory] stringbyappendingstring:@"myapp.db"]; nserror *error = nil; nsfilemanager *fm = [nsfilemanager defaultmanager]; if (![fm fileexistsatpath:storepath]) { nsstring *defaultstorepath = [[nsbundle mainbundle] pathforresource:@"myapp" oftype:@"db"]; if (defaultstorepath) { [fm copyitematpath:defaultstorepath topath:storepath error:null]; } } nsurl *storeurl = [nsurl fileurlwithpath:storepath]; nsdictionary *options = [nsdictionary dictionarywithobjectsandkeys:[nsnumber numberwithbool:yes], nsmigratepersistentstoresautomaticallyoption, [nsnumber numberwithbool:yes], nsinfermappingmodelautomaticallyoption, nil]; persistentstorecoordinator = [[nspersistentstorecoordinator alloc] initwithmanagedobjectmodel:[self managedobjectmodel]]; if (![persistentstorecoordinator addpersistentstorewithtype:nssqlitestoretype configuration:nil url:storeurl options:options error:&error]) { nslog(@"unresolved error : %@: %@", error, [error userinfo]); abort(); } return persistentstorecoordinator; }
in view controller, try fetch entries seems enter code here
empty :
nsmanagedobjectcontext *managedobjectcontext = [self managedobjectcontext]; initwithentityname:@"type_textimage_4text"]; nsfetchrequest *fetchrequest = [[nsfetchrequest alloc] init]; nsentitydescription *description = [nsentitydescription entityforname:@"type_textimage_4text" inmanagedobjectcontext:managedobjectcontext]; [fetchrequest setentity:description]; nsmutablearray *questions = [[managedobjectcontext executefetchrequest:fetchrequest error:nil] mutablecopy]; nslog(@"question : %@", questions);
i missed don't find what. can me please ?
in answer coment above, i'm adding appdelegate.m file of 1 app includes prepopulated sqlite database. selected "use core data" when created project on xcode. although works me, believe better praxis use nsdocument kind of applications. 1 of advantages project on track icloud compatible. haven't done yet, i'm speaking i've read/seen.
// // appdelegate.m // // // #import "appdelegate.h" #import "mainview.h" @implementation appdelegate @synthesize window = _window; @synthesize managedobjectcontext = __managedobjectcontext; @synthesize managedobjectmodel = __managedobjectmodel; @synthesize persistentstorecoordinator = __persistentstorecoordinator; - (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions { uinavigationcontroller *navviewcontroller = (uinavigationcontroller *)self.window.rootviewcontroller; mainview *main=[[navviewcontroller viewcontrollers]objectatindex:0]; main.managedobjectcontext=self.managedobjectcontext; return yes; } - (void)applicationwillresignactive:(uiapplication *)application{ } - (void)applicationdidenterbackground:(uiapplication *)application { } - (void)applicationwillenterforeground:(uiapplication *)application { } - (void)applicationdidbecomeactive:(uiapplication *)application { } - (void)applicationwillterminate:(uiapplication *)application { } - (void)savecontext { nserror *error = nil; nsmanagedobjectcontext *managedobjectcontext = self.managedobjectcontext; if (managedobjectcontext != nil) { if ([managedobjectcontext haschanges] && ![managedobjectcontext save:&error]) { nslog(@"unresolved error %@, %@", error, [error userinfo]); abort(); } } } #pragma mark - core data stack - (nsmanagedobjectcontext *)managedobjectcontext { if (__managedobjectcontext != nil) { return __managedobjectcontext; } nspersistentstorecoordinator *coordinator = [self persistentstorecoordinator]; if (coordinator != nil) { __managedobjectcontext = [[nsmanagedobjectcontext alloc] init]; [__managedobjectcontext setpersistentstorecoordinator:coordinator]; } return __managedobjectcontext; } // returns managed object model application. // if model doesn't exist, created application's model. - (nsmanagedobjectmodel *)managedobjectmodel { if (__managedobjectmodel != nil) { return __managedobjectmodel; } nsurl *modelurl = [[nsbundle mainbundle] urlforresource:@"solvents" withextension:@"momd"]; __managedobjectmodel = [[nsmanagedobjectmodel alloc] initwithcontentsofurl:modelurl]; return __managedobjectmodel; } - (nsstring *)applicationdocumentsdirectorystring { nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes); nsstring *basepath = ([paths count] > 0) ? [paths objectatindex:0] : nil; return basepath; } - (nspersistentstorecoordinator *)persistentstorecoordinator { if (__persistentstorecoordinator != nil) { return __persistentstorecoordinator; } nsurl *storeurl = [[self applicationdocumentsdirectory] urlbyappendingpathcomponent:@"solvents.sqlite"]; nsstring *storepath = [[self applicationdocumentsdirectorystring] stringbyappendingpathcomponent: @"solvents.sqlite"]; //nslog(@"store path %@", storepath); //nslog(@"store url%@", storeurl ); nsfilemanager *filemanager = [nsfilemanager defaultmanager]; if (![filemanager fileexistsatpath:storepath ]) { nsstring *defaultstorepath = [[nsbundle mainbundle] pathforresource:@"solvents" oftype:@"sqlite"]; if (defaultstorepath) { [filemanager copyitematpath:defaultstorepath topath:storepath error:null]; } } 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; } #pragma mark - application's documents directory // returns url application's documents directory. - (nsurl *)applicationdocumentsdirectory { return [[[nsfilemanager defaultmanager] urlsfordirectory:nsdocumentdirectory indomains:nsuserdomainmask] lastobject]; } @end
Comments
Post a Comment