将我的 NSManagedObject 子类与我的 ViewController.swift 连接起来
Connecting my NSManagedObject subclass with my ViewController.swift
概览
这可能是一个非常 dumb/simple 的问题,但它似乎让我陷入了一个循环。根据我在 Whosebug 上的同事的建议,我为我的实体 "UsedInfo" 创建了一个 NSManagedObject 子类。我的最终目标是使用这个子类将User信息发送给CoreData,然后再取回。
问题
问题是我无法弄清楚如何将我的新文件 "UsedInfo+CoreDataProperties.swift" 与我的 "ViewController.swift" 文件一起使用,这是我的 TextFields 连接的地方。您将在下方找到相关代码。
ViewController.swift(保存按钮)
的代码
@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
}
我提前谢谢大家。对不起我的菜鸟。
由于您创建了 NSManagedObject
的子class,您可以使用该子class 而无需任何特殊步骤来 "connect" 它。它已经准备就绪,可以执行 NSManagedObject
定义的任何操作以及添加到新子 class.
中的任何操作
对于 Core Data,您首先要将创建新实例的代码更改为
let entity1 = NSEntityDescription.insertNewObjectForEntityForName("UsedInfo", inManagedObjectContext:context) as NSManagedObject as! UsedInfo
对 insertNewObjectForEntityForName(_:inManagedObjectContext:)
的调用将创建 UsedInfo
的实例,但您需要添加 as! UsedInfo
以明确这就是您所得到的。使用 as!
可能很危险,但这并不是一个坏主意,因为如果此向下转换失败,您想立即 知道,以便您可以修复您的托管对象模型。
之后,entity1
就是你新的UsedInfo
class的一个实例。您可以在下面的代码中使用在 UsedInfo
上声明的属性。例如,
entity1.product = one
概览
这可能是一个非常 dumb/simple 的问题,但它似乎让我陷入了一个循环。根据我在 Whosebug 上的同事的建议,我为我的实体 "UsedInfo" 创建了一个 NSManagedObject 子类。我的最终目标是使用这个子类将User信息发送给CoreData,然后再取回。
问题
问题是我无法弄清楚如何将我的新文件 "UsedInfo+CoreDataProperties.swift" 与我的 "ViewController.swift" 文件一起使用,这是我的 TextFields 连接的地方。您将在下方找到相关代码。
ViewController.swift(保存按钮)
的代码@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
}
我提前谢谢大家。对不起我的菜鸟。
由于您创建了 NSManagedObject
的子class,您可以使用该子class 而无需任何特殊步骤来 "connect" 它。它已经准备就绪,可以执行 NSManagedObject
定义的任何操作以及添加到新子 class.
对于 Core Data,您首先要将创建新实例的代码更改为
let entity1 = NSEntityDescription.insertNewObjectForEntityForName("UsedInfo", inManagedObjectContext:context) as NSManagedObject as! UsedInfo
对 insertNewObjectForEntityForName(_:inManagedObjectContext:)
的调用将创建 UsedInfo
的实例,但您需要添加 as! UsedInfo
以明确这就是您所得到的。使用 as!
可能很危险,但这并不是一个坏主意,因为如果此向下转换失败,您想立即 知道,以便您可以修复您的托管对象模型。
之后,entity1
就是你新的UsedInfo
class的一个实例。您可以在下面的代码中使用在 UsedInfo
上声明的属性。例如,
entity1.product = one