我有一个名为Items
的实体,其中包含两个属性itemName
和itemPrice
。
我创建了NSManagedObject
并且正在插入数据,但我想在同一索引处插入itemName
和itemPrice
。
func addItem(name: String, price: Double){
var items = [NSManagedObject]();
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let entity = NSEntityDescription.entityForName("Items",
inManagedObjectContext:
managedContext);
let itemName = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext:managedContext);
let itemPrice = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext);
itemName.setValue(name, forKey: "itemName");
itemPrice.setValue(price, forKey: "itemPrice");
var error: NSError?
if !managedContext.save(&error) {
println("Could not save \(error), \(error?.userInfo)")
}
items.append(itemName)
items.append(itemPrice);
}
当我执行此代码时,它似乎将数据输入为两个不同的写入(我知道它是)但我不知道如何将它们作为一个一起添加。例如,运行时
items.append(itemName)
输出:
itemName = Car;
itemPrice = nil;
和
items.append(itemPrice)
输出:
itemName = nil ;
itemPrice = 10000;
如何将两个属性一起添加?
答案 0 :(得分:1)
将NSManagedObject视为数据库表中的一行。实体名称与表名称类似,实体的属性类似于列。
您只需为'项目'创建一个新的托管对象(行)。实体(表)然后在该实体上设置属性(列) -
func addItem(name: String, price: Double){
let appDelegate =
UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let newItem = NSEntityDescription.insertNewObjectForEntityForName("Items",
inManagedObjectContext:
managedContext);
newItem.setValue(name, forKey: "itemName");
newItem.setValue(price, forKey: "itemPrice");
var error: NSError?
if !managedContext.save(&error) {
println("Could not save \(error), \(error?.userInfo)")
}
}
答案 1 :(得分:0)
我的建议是创建一个NSManagedObject子类: 1.转到您的数据模型 2.选择实体 3.转到Mac导航栏中的“编辑器”选项卡 4.选择“创建NSManagedObject子类”
一旦你完成了实现这个功能:
func createItem(name: String, price: Int) {
let newEvent = NSEntityDescription.insertNewObjectForEntityForName("Items", inManagedObjectContext: managedObjectContext) as NSManagedObject
newItem.itemName = name
newItem.itemPrice = price
}