Swift 2,警告:无法从dyld共享caching中加载任何Objective-C类信息

我发现了一些关于这个问题的问题,但是他们都没有帮我解决问题。 我试图保存一个对象到核心数据使用这个代码(这在Xcode 6和模拟器中工作得很好):

let fetchRequest = NSFetchRequest(entityName: "Patient") let fetchedResults : [NSManagedObject]! do { fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject] patienten = fetchedResults } catch { print("error") } 

一旦我开始在Xcode 7testing版和物理设备上开发这个项目,我添加了do-try-catch。 现在,当我点击保存button,这段代码被调用,应用程序冻结,我得到以下内容:

警告:无法从dyld共享caching中加载任何Objective-C类信息。 这将显着降低可用types信息的质量。

截图

有人知道我错了吗?

对于将来遇到这个问题的人来说,我自己就碰到了这个问题,事实certificate我实际上是从recursion函数中获得堆栈溢出。

显然,调用setValue:forKey:在NSObject上调用相应的set[Key]函数,其中[Key]是您为forKey部分提供的(大写)名称。

所以,如果像我一样,你的代码如下所示,会导致无限循环和崩溃。

 func setName(name: String) { self.setValue(name, forKey: "name") } 

selectProduct > Clean

我有类似的问题。 我从设备上删除了应用程序。 然后在XCode菜单中select“Product-> Clean”。 当我再次运行应用程序时,问题得到解决。

Swift 3:

其实这个问题经常发生,当你有任何input属性声明为typesNSError和编译器期望一个Error输出,所以改变inputtypes为Error通常解决这个问题。

什么帮助我解决类似的问题(xCode 7,Swift 2):

阅读这个问题

或者更快速地解释解决scheme的原因:只需在您的NSManagedObjectSubclass注释@objc(className) ,这是从您的CoreData实体( @objc(Patient) – 在您的情况)中生成的。

此解决scheme(如果问题仍然出现)不适用于xCode 7.1 / Swift 2.1,因为生成NSManagedObjectSubclasses的方式已更改。

不要忘记清理项目( Product > Clean ),并从设备/模拟器中删除应用程序,以取代CoreData存储。

 let fetchRequest = NSFetchRequest(entityName: "Patient") do { let fetchedResults = try managedObjectContext!.executeFetchRequest(fetchRequest) print("\(fetchedResults)") } catch { print("error") } 

上面的代码为我工作。 也许这个问题可能与你的核心数据pipe理有关。

  1. 检查你的managedObjectContext是否真的被创build。
  2. 检查核心数据的build模