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

zer*_*ero 54 console xcode core-data xcode7 swift2

我已经找到了一些关于这个问题的问题,但是他们都没有帮我解决问题.我正在尝试使用此代码将对象保存到核心数据(在Xcode 6和Simulator中工作得很好......):

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

一旦我开始在Xcode 7 beta和物理设备上开始这个项目,我就添加了do-try-catch.现在,当我点击Save按钮时,这段代码被调用,应用程序冻结,我得到以下内容:

警告:无法从dyld共享缓存加载任何Objective-C类信息.这将显着降低可用类型信息的质量.

截图

有谁知道我哪里出错了?

thi*_*fun 23

对于将来遇到这个问题的人,我自己也遇到了这个问题,事实证明我实际上是从递归函数中获得了堆栈溢出.

显然,调用setValue:forKey:NSObject会调用相应的set[Key]函数,其中[Key]是您给该forKey部分的(大写)名称.

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

func setName(name: String) {
    self.setValue(name, forKey: "name")
}
Run Code Online (Sandbox Code Playgroud)

  • 有一个不同的场景,但相同的问题,无限递归.这个错误完全是误导.+1 (4认同)

Big*_*g D 14

选择Product>Clean

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


Rob*_*ida -1

let fetchRequest = NSFetchRequest(entityName: "Patient")

do {
  let fetchedResults = try managedObjectContext!.executeFetchRequest(fetchRequest)
  print("\(fetchedResults)")
} catch {
  print("error")
}
Run Code Online (Sandbox Code Playgroud)

上面的代码对我有用。也许问题在于你的核心数据是如何管理的。

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