我正在开发一个使用Core Data的应用程序.当我使用以下方法创建实例时:
let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext)
let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext)
Run Code Online (Sandbox Code Playgroud)
我在日志中收到警告:
CoreData: warning: Unable to load class named 'User' for entity 'User'. Class not found, using default NSManagedObject instead.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
另一个问题是,如何在NSManagedObject子类中定义实例方法?
编辑:
我已经指定了实体的类,如下面的屏幕截图所示:

更新到Xcode版本6.0(6A313)后,当我向xcdatamodeld条目添加新属性时,"创建NSManagedObject子类"不会将新属性添加到生成的头文件中.关闭Xcode 6,然后运行版本5.1.1(5B1008)后,此工作正常.我重复这个过程几次,结果相同.我是否需要做一些事情来允许新的Xcode版本正确管理我的数据模型,或重新创建它们,或者这可能只是新Xcode的一个错误?
以下是我采取的具体步骤:
1.在Xcode 6.0(GM Seed)中打开DataModel.xcdatamodeld.
2.选择正确的实体
3.单击+添加新属性
4. 为新属性输入名称和选定的布尔类型
5.编辑 - >创建NSManagedObject子类
6.确保选中正确的数据模型,单击下一步
7.确保选中正确的实体,单击下一步
8.选择要保存的位置(使用根项目文件夹),选择创建
9.在对话框中选择"替换"
10.在生成的头文件中查找变量.变量不存在.
11.关闭Xcode6
12.重复Xcode 5.1.1中的步骤1-10,正确工作
13.重复此过程两次以验证相同的结果
谢谢你的帮助!
我想做一个NSFetchRequest将我的数据显示到UICollectionView:
import UIKit
import CoreData
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
class GarageViewController: UIViewController, UICollectionViewDelegate,UICollectionViewDataSource {
@IBOutlet weak var backgroundView: UIImageView!
@IBOutlet weak var collectionView: UICollectionView!
var voitures: [Voiture] = [Voiture]()
override func viewDidLoad() {
super.viewDidLoad()
collectionView.reloadData()
let fetchRequest = NSFetchRequest(entityName: "Voiture")
fetchRequest.resultType = .DictionaryResultType
do {
try voitures = context.executeFetchRequest(fetchRequest) as! [Voiture]
}
catch let fetchError as NSError {
print("VoitureFetch error: \(fetchError.localizedDescription)")
}
if (voitures.count > 0) {
for …Run Code Online (Sandbox Code Playgroud) 我是使用Swift的Core Data中的菜鸟.我有一个NSManagedObject类看起来像这样:
import Foundation
import CoreData
class Polls: NSManagedObject {
@NSManaged var title: String
@NSManaged var pollDescription: String
}
Run Code Online (Sandbox Code Playgroud)
在UITableViewController子类中,我有一个获取这些对象的方法,如下所示:
func refreshPolls()
{
//do the query to populate the array
let req = NSFetchRequest(entityName: "Polls")
self.polls = self.managedObjectContext?.executeFetchRequest(req, error: nil) as! [Polls]
println(polls.count)
}
Run Code Online (Sandbox Code Playgroud)
请注意,它self.polls被定义为"轮询"对象的数组.
现在,cellForRowAtIndexPath:我只是这样做:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell
if indexPath.row==0
{
cell = tableView.dequeueReusableCellWithIdentifier("EditPollCell") as! UITableViewCell
}
else
{
let poll:Polls = self.polls[indexPath.row-1] as …Run Code Online (Sandbox Code Playgroud)