我有以下数据库,
我有以下 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/