0 Replies
      Latest reply on Apr 23, 2019 8:17 AM by FishOSU
      FishOSU Level 1 Level 1 (0 points)

        We are using Core Data with Core Spotlight integration and a small percentage of our users get a crash on app instantiation. It's very bizarre because 99% of the time it works fine and we have never seen this while developing. The NSInvalidArgumentException reads as "Can't add store" although we know that's not true in most cases because the spotlight database gets filled properly from our Core Data values and search generally works great.

         

        The exception backtrace looks like this:

         

        Fatal Exception: NSInvalidArgumentException
        0  CoreFoundation                 0x18ff3f758 __exceptionPreprocess
        1  libobjc.A.dylib                0x18f147d00 objc_exception_throw
        2  CoreData                       0x192a95a30 -[NSCoreDataCoreSpotlightDelegate initForStoreWithDescription:model:]
        3  OhioStateKit                   0x1007da228 @objc CoreSpotlightDelegate.init(forStoreWith:model:) (CoreSpotlightDelegate.swift)
        4  OhioStateKit                   0x1007da18c CoreSpotlightDelegate.__allocating_init(forStoreWith:model:) (CoreSpotlightDelegate.swift)
        5  OhioStateKit                   0x1007115cc Persistence.constructAndConfigurePersistentContainer(completion:) (Persistence.swift:61)
        6  OhioStateKit                   0x100bec434 AppDelegate.application(_:didFinishLaunchingWithOptions:) (AppDelegate.swift:107)
        7  OhioStateKit                   0x100bed4c0 @objc AppDelegate.application(_:didFinishLaunchingWithOptions:) (<compiler-generated>)
        8  UIKitCore                      0x1bce170c8 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:]
        9  UIKitCore                      0x1bce18890 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:]
        10 UIKitCore                      0x1bce1e2b0 -[UIApplication _runWithMainScene:transitionContext:completion:]
        11 UIKitCore                      0x1bc6b1e20 __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke
        12 UIKitCore                      0x1bc6ba7e8 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:]
        13 UIKitCore                      0x1bc6b1a88 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]
        14 UIKitCore                      0x1bc6b23a4 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:]
        15 UIKitCore                      0x1bc6b05ec __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke
        16 UIKitCore                      0x1bc6b02b0 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]
        17 UIKitCore                      0x1bc6b4fd0 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke
        18 UIKitCore                      0x1bc6b5e1c _performActionsWithDelayForTransitionContext
        19 UIKitCore                      0x1bc6b4e84 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]
        20 UIKitCore                      0x1bc6b9e68 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:]
        21 UIKitCore                      0x1bce1c7ec -[UIApplication workspace:didCreateScene:withTransitionContext:completion:]
        22 UIKitCore                      0x1bc9ff648 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:]
        23 FrontBoardServices             0x1928fd3a8 -[FBSSceneImpl _didCreateWithTransitionContext:completion:]
        24 FrontBoardServices             0x1929076e4 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2
        25 FrontBoardServices             0x192906e34 __40-[FBSWorkspace _performDelegateCallOut:]_block_invoke
        26 libdispatch.dylib              0x18f9518f4 _dispatch_client_callout
        27 libdispatch.dylib              0x18f954ecc _dispatch_block_invoke_direct
        28 FrontBoardServices             0x19293a218 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__
        29 FrontBoardServices             0x192939e94 -[FBSSerialQueue _performNext]
        30 FrontBoardServices             0x19293a490 -[FBSSerialQueue _performNextFromRunLoopSource]
        31 CoreFoundation                 0x18fecf954 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
        32 CoreFoundation                 0x18fecf8d0 __CFRunLoopDoSource0
        33 CoreFoundation                 0x18fecf18c __CFRunLoopDoSources0
        34 CoreFoundation                 0x18fec9e60 __CFRunLoopRun
        35 CoreFoundation                 0x18fec9764 CFRunLoopRunSpecific
        36 GraphicsServices               0x192105dd4 GSEventRunModal
        37 UIKitCore                      0x1bce2000c UIApplicationMain
        38 Ohio State                     0x1004e78c0 main (main.swift:29)
        39 libdyld.dylib                  0x18f988ffc start
        

         

        The instantiation code mostly looks like this:

         

        let persistentStoreUrl = Device.shared.applicationSupportDirectory().appendingPathComponent("OSU Mobile.sqlite")
        let storeDescription = NSPersistentStoreDescription(url: persistentStoreUrl)
        let container = NSPersistentContainer(name: "OSU Mobile", managedObjectModel: model)
        storeDescription.setOption(CoreSpotlightDelegate(forStoreWith: storeDescription, model: container.managedObjectModel): NSCoreDataCoreSpotlightExporter)
        container.persistentStoreDescriptions = [storeDescription]
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            // The app is ready to go
        }
        

         

        Has anyone experienced anything like this? From what we can tell from the somewhat sparse documentation we think we are using it correctly.