2014-09-27 8 views
10

मैं यह त्रुटि हर बार है कि मैं Simulator पर एप्लिकेशन इंस्टॉल Xcode 6CoreData: त्रुटि: -addPersistentStoreWithType: SQLite विन्यास: (शून्य)

2014-09-27 11:25:01.286 MyFace[2992:1780149] CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///Users/douglasferreira/Library/Developer/CoreSimulator/Devices/DAC1BEDE-8673-471C-ADFD-923654C78719/data/Containers/Data/Application/D2213EE4-3807-44FF-9FD0-E7C6C1BD18A2/Library/MyFace.sqlite options:{ 
NSInferMappingModelAutomaticallyOption = 1; 
NSMigratePersistentStoresAutomaticallyOption = 1; 
} ... returned error Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x7fe566317030 {reason=File appeared during sanity check; this seems suspicious} with userInfo dictionary { 
reason = "File appeared during sanity check; this seems suspicious"; 
} 

[2014-09-27 11:25:01:288] [ERROR] Problems to initialize persistent store coordinator: Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x7fe566317030 {reason=File appeared during sanity check; this seems suspicious}, The operation couldn’t be completed. (Cocoa error 512.) 

का उपयोग कर मिल गया यह मैं कैसे बना है NSManagedObjectModel और NSPersistentStoreCoordinator

- (NSManagedObjectModel *)managedObjectModel 
{ 
    if (!_managedObjectModel) 
    { 
     // It is created from the application's model with the following name and extension 
     NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyFace" withExtension:@"momd"]; 
     _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
    } 
    return _managedObjectModel; 
} 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (!_persistentStoreCoordinator) 
    { 
     // generic variable to hold any error occurred during context creation 
     NSError *error = nil; 

     NSDictionary *persistentOptions = @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}; 

     // Create the coordinator with the previous parameters 
     NSURL *storeURL = [[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject]; 
     storeURL = [storeURL URLByAppendingPathComponent:@"MyFace.sqlite"]; 

     // try to initialize persistent store coordinator with options defined below 
     self.persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel]; 
     [self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 
                 configuration:nil 
                   URL:storeURL 
                  options:persistentOptions 
                   error:&error]; 

     if (error) 
     { 
      NSLog(@"[ERROR] Problems to initialize persistent store coordinator: %@, %@", error, [error localizedDescription]); 
     } 
    } 
    return _persistentStoreCoordinator; 
} 

मैंने हर तरह के झंडे की कोशिश की है .. लेकिन मुझे नहीं पता कि इसे कैसे प्राप्त किया जाए।

धन्यवाद!

+0

मुझे आश्चर्य है कि यह एक पथ समस्या है या नहीं। यदि आप 'NSLibraryDirectory' के बजाय 'NSDocumentDirectory' का उपयोग करते हैं तो क्या आपको वही चीज़ मिलती है? –

+0

मुझे एक अलग त्रुटि मिली .. मुझे लगता है कि यह बदतर है। 'त्रुटि डोमेन = NSCocoaErrorDomain कोड = 512" ऑपरेशन पूरा नहीं हो सका। (कोको त्रुटि 512.) "UserInfo = 0x7fbec9c36e70 {कारण = फ़ाइल बनाने में विफल; कोड = 2}, ऑपरेशन पूरा नहीं हो सका। (कोको त्रुटि 512.) ' –

उत्तर

11

मुझे मेरी समस्या का समाधान मिला। मेरे पास NSPersistentStoreCoordinator तक पहुंचने के दो धागे थे, जबकि यह अभी तक नहीं बनाया गया था। इसलिए मैंने आलसी init पर @synchronize जोड़ा और अनुरोधों को कतारबद्ध किया।

0

डगलस सही है। मेरे जैसे आईओएस नोबिज के लिए, शब्द निम्न होगा:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    @synchronized(self) { 

     if (!_persistentStoreCoordinator) 
     { 
      // generic variable to hold any error occurred during context creation 
      NSError *error = nil; 

      NSDictionary *persistentOptions = @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}; 

      // Create the coordinator with the previous parameters 
      NSURL *storeURL = [[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject]; 
      storeURL = [storeURL URLByAppendingPathComponent:@"MyFace.sqlite"]; 

      // try to initialize persistent store coordinator with options defined below 
      self.persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel]; 
      [self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 
                  configuration:nil 
                    URL:storeURL 
                   options:persistentOptions 
                    error:&error]; 

      if (error) 
      { 
       NSLog(@"[ERROR] Problems to initialize persistent store coordinator: %@, %@", error, [error localizedDescription]); 
      } 
     } 

    } 
    return _persistentStoreCoordinator; 
} 
संबंधित मुद्दे