相关疑难解决方法(0)

CoreData:警告:无法加载命名的类

我正在使用Xcode 6.1将现有的Objective-C电视节目应用程序复制到新的Swift版本,并且我在使用CoreData时遇到了一些问题.

我创建了一个包含4个实体的模型,创建了它们的NSManagedObject子类(在Swift中),并且所有文件都设置了适当的应用程序目标(用于"编译源代码").

每当我尝试插入一个新实体时,我仍然会收到此错误:

CoreData:警告:无法为实体"显示"加载名为"显示"的类.找不到类,而是使用默认的NSManagedObject.

一些评论:

保存到Core Data时,我使用父子上下文方式来允许背景线程.我这样做是通过使用以下方法设置ManagedObjectContext:

lazy var managedObjectContext: NSManagedObjectContext? = {
  // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
  let coordinator = self.persistentStoreCoordinator
  if coordinator == nil {
    return nil
  }
  var managedObjectContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType)
  managedObjectContext.persistentStoreCoordinator = coordinator
  return managedObjectContext
}()
Run Code Online (Sandbox Code Playgroud)

并使用以下方法保存数据:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, …
Run Code Online (Sandbox Code Playgroud)

multithreading core-data nsmanagedobject swift

91
推荐指数
6
解决办法
3万
查看次数

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

我已经找到了一些关于这个问题的问题,但是他们都没有帮我解决问题.我正在尝试使用此代码将对象保存到核心数据(在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类信息.这将显着降低可用类型信息的质量.

截图

有谁知道我哪里出错了?

console xcode core-data xcode7 swift2

54
推荐指数
3
解决办法
4万
查看次数

为什么我可以转换为NSManagedObject而不是我的实体类型?

我正在一个新项目中使用Swift样板代码来处理Core Data.我的.xcdatamodeld文件有一个实体defined(Task),有一个属性(name).

我有一个Task.swift看起来像这样的文件:

import CoreData

class Task: NSManagedObject {
    @NSManaged var name: String
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它的工作原理:

var firstTask = NSEntityDescription.insertNewObjectForEntityForName("Task",
    inManagedObjectContext: managedObjectContext) as NSManagedObject

firstTask.setPrimitiveValue("File my TPS reports", forKey: "name")

var error: NSError?

managedObjectContext.save(&error)
Run Code Online (Sandbox Code Playgroud)

我甚至可以进入iOS模拟器使用的SQLite数据库,并确认已添加该行.

但是,当我运行与上面完全相同的代码但是,as Task而不是as NSManagedObject,我得到一个崩溃与错误消息Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0),与var firstTask...线相关联.如果我继续执行,我得到EXC_BAD_ACCESS0 misaligned_stack_error_在每一次我提前就螺纹1的顶部.

为什么这个演员会导致这一切?

core-data ios swift

35
推荐指数
5
解决办法
2万
查看次数

找不到类,而是使用默认的NSManagedObject

IOS 8中的核心数据存在问题.每当我想使用该insertNewObjectForEntityForName方法时,我都会得到

找不到类,而是使用默认的NSManagedObject.

错误信息.我使用objective-c,我没有使用IOS 7这个问题.也可能有任何问题,因为在我的工作区有两个项目,一个包含核心数据相关的代码,另一个包含UI.

core-data objective-c ios ios8

13
推荐指数
5
解决办法
1万
查看次数

从Swift中获取CoreData中最新的项目

我是CoreData的新手,已经阅读了一些教程,但空手而归.大多数教程都集中在从CoreData获取以填充tableview,这不是我目前所做的.

这是我在CoreData中设置数据的方式.Double除了日期之外,所有类型都是NSDate

let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)

let managedObjectContext = appDelegate.managedObjectContext
let entityDescription = NSEntityDescription.entityForName("Meditation", inManagedObjectContext: managedObjectContext!)
let meditation = NSManagedObject(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)

meditation.setValue(settings.minutes, forKey: "length")
meditation.setValue(settings.warmup, forKey: "warmup")
meditation.setValue(settings.cooldown, forKey: "cooldown")
meditation.setValue(NSDate(), forKey: "date")

// fetch stuff from CoreData
var request = NSFetchRequest(entityName: "Meditation")
var error:NSError? = nil
var results:NSArray = managedObjectContext!.executeFetchRequest(request, error: &error)!

for res in results {
    println(res)
}
Run Code Online (Sandbox Code Playgroud)

这里就是我想要做的就是结果,但我不能访问类的东西.minutes,.date等我知道我还不能正确得到最后一个项目或者,我只是想在打印出的属性首先是对象.

我非常喜欢如何获取最新的对象以及显示它的属性

谢谢!

core-data swift

13
推荐指数
1
解决办法
1万
查看次数

核心数据:无法加载名为"CDAccount"的类

我最近下载了iOS 8,以确保我现有的应用程序正常运行,但是我在启动时在调试器中收到警告:

"CoreData: warning: Unable to load class named 'CDAccount' for entity 'CDAccount'.  
Class not found, using default NSManagedObject instead."
Run Code Online (Sandbox Code Playgroud)

经过一些研究,似乎人们在Swift中使用Core Data时遇到了类似的问题,但我的所有代码都在Objective-C中(并且数据模型至少在6个月内没有变化).

任何建议都非常感谢,一旦人们开始升级到iOS 8,我真的很紧张我的应用程序无法正常运行!

core-data objective-c nsmanagedobject ios ios8

6
推荐指数
2
解决办法
7291
查看次数

CoreData:警告:无法为实体"读取"加载名为"WEEReadings"的类.找不到类,而是使用默认的NSManagedObject

好的,这是社区帮助的时间,经过数小时和数小时的搜索.

我有一个静态库,并使用这个很棒的脚本生成我的静态框架,其中包括通用静态库,我也创建了一个包含ReadingsCoreDataModel.momd的包,其中包含ReadingsCoreDataModel.mom.好的,我提供给我的客户端iOS应用程序,所有构建正确并启动应用程序纠结到我的框架并使用捆绑包,我在我的静态库中有一个单独的WEEDataStore类,由另一个名为Worker的类使用,检查,NSManagedObjectModel不是nil并且看起来要正确加载,NSPersistentStoreCoordinator不是nil,NSManagedObjectContext不是nil.

在WEEDataStore中,我有一个save方法,我从静态库中的Worker类调用它.

在我的ReadingsCoreDataModel.momd中,我创建了一个具有名称读数和类WEEReadings的实体.

我在Worker类中执行以下操作

WEEReadings* readingsEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Readings" inManagedObjectContext:[[WEEDataStore sharedInstance] managedContext]];
[readingsEntity appendWithReadingsModel:self.readingsModel];
[[WEEDataStore sharedInstance] save];
Run Code Online (Sandbox Code Playgroud)

结果是得到以下错误

CoreData: warning: Unable to load class named 'WEEReadings' for entity 'Readings'.  Class not found, using default NSManagedObject instead.
2014-12-13 20:11:30.080 TestClient[6854:2487108] -[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0
2014-12-13 20:11:30.084 TestClient[6854:2487108] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject appendWithReadingsModel:]: unrecognized selector sent to instance 0x1700ccda0'
Run Code Online (Sandbox Code Playgroud)

我几乎已经阅读了所有类似的错误,大多数使用Swift进行故障排除,或者使用模型进行拼写错误,其他建议使用与应用程序名称相同的型号名称,我不认为我可以这样做或者它与错误有关.

我的静态库中的所有标题都是Project,除了暴露给客户端的那些标题添加为Public.还尝试将它们全部添加为公共但它没有任何区别.

所有核心数据操作都是内部的.

看起来核心数据模型已正确加载但无法找到我的类,它肯定包含在框架中包含的静态库中.

在我注册疯人之前的任何想法?

core-data resourcebundle objective-c static-libraries ios

5
推荐指数
1
解决办法
2302
查看次数

CoreData - 使用类别的等效w /示例 - Swift

我想知道如何在下面为我的CoreData NSManagedObject客户端创建一个类别的等价物:

我知道扩展现在是Swift中类别的替代 - 但不确定它们的实现.以下是我在下面扣除的内容:

class Client: NSManagedObject {

    @NSManaged var name: String
    @NSManaged var projects: NSSet

}

extension Client {

    func addClientWithName(name:NSString, context:NSManagedObjectContext) -> Client {
        var client:Client = Client();

        // Check for name in the database already exists
        let request:NSFetchRequest = NSFetchRequest(entityName: "Client")
        let sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
        let sortDescriptorsAry:NSArray = [sortDescriptor]
        request.sortDescriptors = sortDescriptorsAry
        request.predicate = NSPredicate(format: "name = %@", name)

        var error:NSError?
        let matches:NSArray = context.executeFetchRequest(request, error: &error)

        if matches.count == 0 {

            //Add …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject ios swift

1
推荐指数
1
解决办法
2133
查看次数