设置 CDEPersistentStoreEnsemble 给出 [NSMapTable cde_strongToStrongObjectsMapTable]:
Posted
技术标签:
【中文标题】设置 CDEPersistentStoreEnsemble 给出 [NSMapTable cde_strongToStrongObjectsMapTable]:【英文标题】:Setting up CDEPersistentStoreEnsemble gives [NSMapTable cde_strongToStrongObjectsMapTable]: 【发布时间】:2016-08-05 11:27:37 【问题描述】:我正在设置集成以将 CoreData 同步到 iCloud。 但它在启动时崩溃: [NSMapTable cde_strongToStrongObjectsMapTable]:无法识别的选择器发送到类 0x10d978c70 2016-08-05 12:48:42.502 Shooters_Journal [30266:751831] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+ [NSMapTable cde_strongToStrongObjectsMapTable]:无法识别的选择器发送到类 0x10d978c70”
我不明白这是什么意思。我该如何进行调试? 我已经添加了我的 CoreData Stack 和 Ensembles 设置。作为记录,该应用程序运行良好,无需设置合奏。 在我的 AppDelegate 中,我有:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
// setups
// Setup Ensemble
let modelURL = NSBundle.mainBundle().URLForResource("Myidentifier", withExtension: "momd")
cloudFileSystem = CDEICloudFileSystem(ubiquityContainerIdentifier: nil)
let storeURL = self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreData.sqlite")
ensemble = CDEPersistentStoreEnsemble(ensembleIdentifier: "ShotsStore", persistentStoreURL: storeURL, managedObjectModelURL: modelURL!, cloudFileSystem: cloudFileSystem)
ensemble.delegate = self
return true
我的 CoreData 堆栈是 XCode 创建的默认堆栈
// MARK: - Core Data stack
lazy var applicationDocumentsDirectory: NSURL =
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1]
()
lazy var managedObjectModel: NSManagedObjectModel =
let modelURL = NSBundle.mainBundle().URLForResource("Myidentifier", withExtension: "momd")
return NSManagedObjectModel(contentsOfURL: modelURL!)!
()
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator =
// Create the coordinator and store
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let storeUrl = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
var failureReason = "There was an error creating or loading the application's saved data."
do
try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeUrl, options: nil)
catch
// Report any error we got.
var dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason
dict[NSUnderlyingErrorKey] = error as NSError
let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
abort()
return coordinator
()
lazy var managedObjectContext: NSManagedObjectContext =
let coordinator = self.persistentStoreCoordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
()
应用程序编译正常,但在启动时出现以下错误:
[NSMapTable cde_strongToStrongObjectsMapTable]:无法识别的选择器 发送到类 0x10d978c70
我现在只有这行:
ensemble = CDEPersistentStoreEnsemble(ensembleIdentifier: "ShotsStore", persistentStoreURL: storeURL, managedObjectModelURL: modelURL!, cloudFileSystem: cloudFileSystem)
导致崩溃。 我不知道是persistentStoreURL、managedObjectModelURL 还是cloudFileSystem 引起了错误。
【问题讨论】:
【参考方案1】:我认为您忘记了自述文件中的 -ObjC 步骤。这将导致所有类别都被链接,从而导致缺少符号错误。
【讨论】:
以上是关于设置 CDEPersistentStoreEnsemble 给出 [NSMapTable cde_strongToStrongObjectsMapTable]:的主要内容,如果未能解决你的问题,请参考以下文章
短视频运营短视频剪辑 ⑤ ( 视频素材使用 | 设置插入后的视频素材属性 | 设置画面 | 设置音频 | 设置变速 | 设置动画 | 设置调节 )
SeeMusicMIDI 编辑功能 ( 速度设置 | SoundFont 音源设置 | 混响强度设置 | 混响时间设置 | 力度增益设置 | 实时 MIDI 设置 )
HTMLHTML 注册表单案例 ① ( 表格设置 | 设置表格位置和大小 | 设置表格标题 | 表单设置 | 表格中设置单选按钮 )