将我的NSManagedObject子类与我的ViewController.swift连接

时间:2016-06-21 15:24:57

标签: ios swift core-data nsmanagedobject

概览

这可能是一个非常愚蠢/简单的问题,但它似乎让我经历了一个循环。我根据我在StackOverflow上的研究员的建议为我的实体“UsedInfo”创建了一个NSManagedObject子类。我的最终目标是使用此子类将用户信息发送到CoreData,然后检索它。

问题

问题是我无法弄清楚如何使用我的新文件“UsedInfo + CoreDataProperties.swift”和我的“ViewController.swift”文件,这是我的TextFields所连接的位置。您可以在下面找到相关代码。

ViewController.swift(SaveButton)代码

@IBAction func saveButton(sender: AnyObject) {
    let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
    let context:NSManagedObjectContext = appDel.managedObjectContext
    let managedContext:NSManagedObjectContext = appDel.managedObjectContext
    let entity1 = NSEntityDescription.insertNewObjectForEntityForName("UsedInfo", inManagedObjectContext:context) as NSManagedObject

    let one = pickerTextField.text
    let two = modelName.text
    let three = serialNo.text
    let four = YOM.text
    let five = engineHours.text
    let six = locationOfMachine.text

    entity1.setValue(one, forKey: "product")
    entity1.setValue(two, forKey:"modelName")
    entity1.setValue(three, forKey:"serialNo")
    entity1.setValue(four, forKey:"yom")
    entity1.setValue(five, forKey:"engineHours")
    entity1.setValue(six, forKey:"location")
    print(entity1.valueForKey("product"))
    print(entity1.valueForKey("modelName"))
    print(entity1.valueForKey("serialNo"))
    print(entity1.valueForKey("yom"))
    print(entity1.valueForKey("engineHours"))


    do {
        try context.save()
    }
    catch {
        print("error")
    }


}

“UsedInfo + CoreDataProperties.swift”的代码

import Foundation
import CoreData

extension UsedInfo {

@NSManaged var engineHours: String?
@NSManaged var location: String?
@NSManaged var modelName: String?
@NSManaged var product: String?
@NSManaged var serialNo: String?
@NSManaged var yom: String?

}

“UsedInfo.swift”的代码

import Foundation
import CoreData
class UsedInfo: NSManagedObject {

    //Insert code here to add functionality to your managed object subclass

}
我提前感谢大家。对不起,我很抱歉。

1 个答案:

答案 0 :(得分:1)

由于您创建了NSManagedObject的子类,因此您可以使用该子类而无需任何特殊步骤来“连接”它。它已准备就绪,它可以执行NSManagedObject定义的任何内容以及新子类中添加的任何内容。

使用Core Data,您首先要将创建新实例的代码更改为

let entity1 = NSEntityDescription.insertNewObjectForEntityForName("UsedInfo", inManagedObjectContext:context) as NSManagedObject as! UsedInfo

insertNewObjectForEntityForName(_:inManagedObjectContext:)的调用会创建UsedInfo的实例,但您需要添加as! UsedInfo以明确表示您正在获取的内容。使用as!可能很危险,但这不是一个坏主意,因为如果这个向下转发失败,您想立即知道 ,以便您可以修复您的托管对象模型。

之后,entity1是您的新UsedInfo课程的一个实例。您可以在下面的代码中使用UsedInfo上声明的属性。例如,

entity1.product = one