ios - 在 Swift 编程语言中将 NSManagedObject 从一个类传递到另一个类?

标签 ios core-data swift

我有以下数据库,

enter image description here

我有以下 NSManagedObject 员工类。

导入基金会 导入核心数据

class Employee: NSManagedObject {

    @NSManaged var age: NSNumber
    @NSManaged var firstName: String
    @NSManaged var gender: String
    @NSManaged var lastName: String
    @NSManaged var salary: NSNumber

}

我有一个 UIViewController 类,它包含 5 个 UITextFields 和一个 UIButton,用于在数据库中添加值。

如果我在同一个类中插入值,比如

let employee:Employee = NSEntityDescription.insertNewObjectForEntityForName("Employee", inManagedObjectContext: self.managedObjectContext!) as Employee

它工作正常,但我遵循了应用程序的面向对象结构并制作了一个 DatabaseManager.swift 类,

所以现在我面临的问题是将 NSManagedObject 从 Controller 类传递到 DatabaseManager 类。

我编码如下,但是它给出了错误。

@IBAction func addToDatabase(sender: UIButton) {
    println("Add to Database is clicked")

    var employee:Employee = Employee() //Employee is subclass of NSManagedObject

    employee.firstName = textfield_firstName.text
    employee.lastName = textfield_lastName.text
    employee.gender = textfield_gender.text
    employee.age = (textfield_age.text as String).toInt()!
    employee.salary = (textfield_salary.text as String).toInt()!

    var databaseManager:DatabaseManager = DatabaseManager()
    databaseManager.saveEmployee(employee)

}

错误:

2014-11-06 10:34:46.710 CoreDataWithSwift[588:9220] CoreData: error: Failed to call designated initializer on NSManagedObject class 'CoreDataWithSwift.Employee' 
2014-11-06 10:34:46.736 CoreDataWithSwift[588:9220] -[CoreDataWithSwift.Employee setFirstName:]: unrecognized selector sent to instance 0x7fa269e20800
2014-11-06 10:34:46.756 CoreDataWithSwift[588:9220] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CoreDataWithSwift.Employee setFirstName:]: unrecognized selector sent to instance 0x7fa269e20800'

谢谢。

最佳答案

你不应该直接创建 NSManagedObject 实例,而是调用:

var employee = NSEntityDescription.insertNewObjectForEntityForName(entityName, inManagedObjectContext: managedObjectContext) as Employee?

然后更改员工的属性并保存结果。

关于ios - 在 Swift 编程语言中将 NSManagedObject 从一个类传递到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772401/

相关文章:

ios - 使用swift在ios上同时播放音频和振动

iphone - Facebook和Twitter自动共享到用户帐户?

ios - 使用 Swift 与需要 block 作为参数的 Objective C 方法进行交互

swift - 如何将核心数据加载到结构中

swift - 应用程序委托(delegate)没有成员 persistenceStoreCoordinator(从核心数据中删除,swift)

ios - 如何检查核心数据中是否存在相关实体?

ios - 格式化最大非零有效数字

ios - Swift iOS -DispatchGroup with URLSession 正在锁定它不在的应用程序的其他部分

swift - 快速从图库中选择照片不起作用

ios - 后台任务不在 Swift 中调用类