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理有关。
- 检查你的
managedObjectContext
是否真的被创build。 - 检查核心数据的build模