Swift开发coredata出现Class not found解决办法

来源:互联网 发布:cae与bim软件分类 编辑:程序博客网 时间:2024/05/09 06:09

转载自http://blog.csdn.net/longhai0long/article/details/38379247


刚看swift开发IOS,在使用Core Data框架时遇到了一个问题

  控制台打出的log 如下:

<span style="font-size:14px;">CoreData: warning: Unable to load class named 'CollectNews' for entity 'CollectNews'.  Class not found, using default NSManagedObject instead.</span>

  百思不得其姐抓狂

  后来在StackOverFlow上找到了一种解决办法,就是在Model类的开关加上这个的注解:

<span style="font-size:14px;">@objc(CollectNews)  </span>

Demo的部分代码分享给大家,仅做参考:
Model类

<span style="font-size:14px;">import Foundation  import CoreData  </span>
<span style="font-size:14px;">  @objc(CollectNews)  class CollectNews: NSManagedObject {        @NSManaged var date: NSNumber      @NSManaged var newsId: NSNumber  } </span>


AppDelegate类:
<span style="font-size:14px;">func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {        insertData()      selectData()        return true  }    //插入数据  func insertData(){        //取Entity对象      var collectNews = NSEntityDescription.insertNewObjectForEntityForName("CollectNews", inManagedObjectContext: self.managedObjectContext) as CollectNews        //对属性进行修改      collectNews.newsId = 12      collectNews.date = 20140805        //保存      if self.managedObjectContext.hasChanges{          self.managedObjectContext.save(nil)      }  }    //查询  func selectData(){      //得request对象      var request = NSFetchRequest()      var entityQueue = NSEntityDescription.entityForName("CollectNews", inManagedObjectContext: self.managedObjectContext)      request.entity = entityQueue      var errorInfo:NSError?      //取结果集      var resultArr = self.managedObjectContext.executeFetchRequest(request, error: &errorInfo) as NSArray        println("----》\(resultArr.count)")        var temp = resultArr[0] as CollectNews        println("--->\(temp.newsId)")  }  </span>






0 0