2016-09-21 5 views
0

CoreData를 사용하여 데이터를 저장하려고하는데 오늘 응용 프로그램 테스트를 시도 할 때 "치명적인 오류가 발생했습니다 : 선택 값을 언 래핑하는 동안 예기치 않게 nil이 발견되었습니다"및 EXC_BREAKPOINT 메시지가 나타납니다.UIApplication.sharedApplication(). AppDelegate EXC_BREAKPOINT

class ViewController: UIViewController { 

let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext <-- Here is the error 

그리고 만약 내가 UIApplication.sharedApplication()을 사용한다면! AppDelegate AppDelegate에서 다른 함수를 호출하여 동일한 오류가 발생합니다. 누구나 그 문제를 알고 있습니까?

+0

너무 짧습니다. 'viewDidLoad'에 코드 넣기 – vadian

+0

@vadian 그렇다면 IBAction에서는 사용할 수 없습니다 :/ – Marco

+0

두 변수를'var' 및 암시 적 래핑 해제 옵션으로 선언하고'viewDidLoad'에 값을 할당하십시오 – vadian

답변

0

초기화 중에 AppDelegate을 사용할 수 있다고 보장 할 수 없습니다. managedObjectContext으로 암시 풀어 옵션을 선언하고 viewDidLoad

class ViewController: UIViewController { 

    var managedObjectContext: NSManagedObjectContext! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
     managedObjectContext = appDelegate.managedObjectContext 
    } 

} 

의 값을 할당하거나 클래스의 최상위 레벨에서 초기화 게으른로 변수를 선언합니다.

lazy var managedObjectContext : NSManagedObjectContext = { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    return appDelegate.managedObjectContext 
}() 
+0

이제 viewDidLoad에서 EXC_BREAKPOINT를 얻고 있습니다 ... – Marco

+0

그런 다음'viewWillAppear'에서 시도하십시오 – vadian

+0

viewDidLoad에서와 같은 오류가 발생했습니다. – Marco

관련 문제