• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Core Data concurrency during import of folder contents
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Core Data concurrency during import of folder contents


  • Subject: Re: Core Data concurrency during import of folder contents
  • From: Steve Mills <email@hidden>
  • Date: Tue, 03 Feb 2015 00:48:20 -0600

On Feb 2, 2015, at 17:36:22, Roland King <email@hidden> wrote:
>
> get the NSManagedObjectContext the document creates for you with [ super managedObjectContext ], get the store coordinator with [ managedObjectContext persistentStoreCoordinator ], create your own MOCs on that store, hold on to the MOC you have just created, ignore the one super created (or perhaps you can nil it, not sure) and then return it.

That sounds interesting. I've tried it, and it causes my managedObjectContext override to be called twice during document creation. The 2nd call is caused by my managedObjectContext override calling [super managedObjectContext], and super tries to set up the undo manager for its managedObjectContext. I don't know if this is harmless or OK.

So since no exceptions are thrown during the creating of my own MOCs, I go ahead and add objects to a temp private MOC whose parent is my managedObjectContext. That works and my table view is populated after it completes. But when I try to save at the end of my concurrent object-adding block, it throws:

CoreData: error: Illegal attempt to save to a file that was never opened. "This NSPersistentStoreCoordinator has no persistent stores (unknown).  It cannot perform a save operation.". No last error recorded.
An uncaught exception was raised
This NSPersistentStoreCoordinator has no persistent stores (unknown).  It cannot perform a save operation.
(
	0   CoreFoundation                      0x00007fff8569b66c __exceptionPreprocess + 172
	1   libobjc.A.dylib                     0x00007fff87dfd76e objc_exception_throw + 43
	2   CoreData                            0x00007fff898b7eb3 -[NSPersistentStoreCoordinator _coordinator_you_never_successfully_opened_the_database_so_saving_back_to_it_is_kinda_hard:] + 51
	3   CoreData                            0x00007fff898b810d -[NSPersistentStoreCoordinator _introspectLastErrorAndThrow] + 77
	4   CoreData                            0x00007fff898b8236 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke + 166
	5   CoreData                            0x00007fff898c331b gutsOfBlockToNSPersistentStoreCoordinatorPerform + 171
	6   libdispatch.dylib                   0x0000000100025d43 _dispatch_client_callout + 8
	7   libdispatch.dylib                   0x00000001000270b1 _dispatch_barrier_sync_f_invoke + 348
	8   CoreData                            0x00007fff898b2312 _perform + 194
	9   CoreData                            0x00007fff89804395 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 533
	10  CoreData                            0x00007fff898043c4 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 580
	11  CoreData                            0x00007fff8982eb3b -[NSManagedObjectContext save:] + 1291
	12  Image Chest                         0x0000000100002291 -[Document unsafeSaveContext:] + 113
	13  Image Chest                         0x000000010000213a __24-[Document saveContext:]_block_invoke + 42
	14  CoreData                            0x00007fff8984a246 developerSubmittedBlockToNSManagedObjectContextPerform + 182
	15  libdispatch.dylib                   0x0000000100025d43 _dispatch_client_callout + 8
	16  libdispatch.dylib                   0x0000000100029fb3 _dispatch_queue_drain + 1804
	17  libdispatch.dylib                   0x000000010002bfc0 _dispatch_queue_invoke + 223
	18  libdispatch.dylib                   0x0000000100028f5e _dispatch_root_queue_drain + 666
	19  libdispatch.dylib                   0x000000010003acd0 _dispatch_worker_thread3 + 106
	20  libsystem_pthread.dylib             0x00007fff92a82637 _pthread_wqthread + 729
	21  libsystem_pthread.dylib             0x00007fff92a8040d start_wqthread + 13
)

The save model is based on Jerry's YaBT sample mentioned earlier in the thread, which has a rootContext (NSPrivateQueueConcurrencyType), mainContext (NSMainQueueConcurrencyType), and tempContext (NSPrivateQueueConcurrencyType) in a chain of children. I'm guessing it's because the document has not been saved to disk yet, whereas the YaBT sets up a file for the persistent store when it creates it. Since the document sets up the store, I don't know what I'd do in this case.

Ugh. This needs to be more complicated and harder to comprehend.

--
Steve Mills
Drummer, Mac geek


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Core Data concurrency during import of folder contents
      • From: Dave Fernandes <email@hidden>
References: 
 >Re: Core Data concurrency during import of folder contents (From: Steve Mills <email@hidden>)
 >Re: Core Data concurrency during import of folder contents (From: Roland King <email@hidden>)

  • Prev by Date: Re: NSDocument Save As... problem?
  • Next by Date: Re: Core Data concurrency during import of folder contents
  • Previous by thread: Re: Core Data concurrency during import of folder contents
  • Next by thread: Re: Core Data concurrency during import of folder contents
  • Index(es):
    • Date
    • Thread