如何在CoreData iOS中的实体中的同一索引处添加两个项目

时间:2014-12-12 00:55:13

标签: ios swift core-data

我有一个名为Items的实体,其中包含两个属性itemNameitemPrice

我创建了NSManagedObject并且正在插入数据,但我想在同一索引处插入itemNameitemPrice

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;

如何将两个属性一起添加?

2 个答案:

答案 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
}