2016-06-21 4 views
0

개요내 ViewController.swift

이 아마 매우 벙어리/간단한 질문입니다 내 NSManagedObject 하위 클래스를 연결하지만 루프를 통해 저를 던지는 것 같다. StackOverflow에서 내 동료의 조언에 따라 "UsedInfo"엔티티에 대한 NSManagedObject 하위 클래스를 만들었습니다. 내 궁극적 인 목표는이 하위 클래스를 사용하여 사용자 정보를 CoreData로 보내고 나중에 검색하는 것입니다.

문제

문제는 내가 내 새 파일을 사용하는 방법을 알아낼 수 있다는 것입니다, 내 TextField의 어디에 내 "ViewController.swift"파일과 "UsedInfo + CoreDataProperties.swift", 연결. 아래에서 관련 코드를 찾을 수 있습니다.

코드 ViewController.swift에 대한 (SaveButton) "UsedInfo + CoreDataProperties.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") 
    } 


} 

코드

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

NSManagedObject의 하위 클래스를 만들었으므로 특별 단계없이 해당 하위 클래스를 "연결할"수 있습니다. 준비가 완료되었으며 NSManagedObject으로 정의 된 모든 작업과 새 하위 클래스에 추가 된 작업을 모두 수행 할 수 있습니다. 당신이 insertNewObjectForEntityForName(_:inManagedObjectContext:)에 대한 호출이 UsedInfo의 인스턴스를 생성합니다

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

같은 것으로 새로운 인스턴스를 생성하는 코드를 변경하여 시작 했죠,하지만 당신은 할 수있는 as! UsedInfo를 추가 할 필요가 코어 데이터로

그게 당신이 얻는 것임을 분명히하십시오. as!을 사용하는 것은 위험 할 수 있지만 나쁜 생각이 들지 않습니다.이 다운 캐스트가 실패하면 을 알아야 관리 대상 개체 모델을 수정할 수 있습니다.

그 후 entity1은 새로운 UsedInfo 클래스의 인스턴스입니다. 아래 코드에서 UsedInfo에 선언 된 속성을 사용할 수 있습니다. 예 :

entity1.product = one 
+0

이것은 내가 찾고있는 것입니다. 고마워, 탐. 나는 내 질문이 바보 같아 보인다는 것을 알고, 나는 iOS 개발에 익숙하지 않다. – gavsta707