2017-05-18 1 views
1

xcode를 버전 8.3.2로 업데이트하고 시도 할 때 문제가 있습니다. 코드가 작동했지만 업데이트가 끝난 후에는 더 이상 작동하지 않습니다. 아래 코드를 준수합니다.여기에서 던져진 오류는 context.save에서 포괄적 인 캐치가 완전하지 않기 때문에 처리되지 않습니다.

func saveContext() -> NSError?{// It saving 
     do { 
      if context == context { 
       try context.save() 
      // taskNameTextField.text=nil 
      } 
     } catch let error as! NSError? { 
      print("error saving core data: \(error)") 
      return error 
     } 
     return nil 
    } // 

누군가가 도와 줄 수 있습니까?

+0

은 캐치하지 않고 NSError'으로 오류를하자 '이어야한다 임의의 불필요한 구두점. – dan

+0

@dan 문제는 Swift 3에서 오류가 NSE 오류가 아니라는 것입니다. 오류입니다. –

+0

@DanielT. 당신은'NSError'에'Error'를 연결할 수 있습니다. – dan

답변

0

그래서 Swift 2에서 Swift 3으로 업데이트 할 때 Apple 변환기가 코드의 모든 문제를 포착하지 못하는 것으로 나타났습니다. 직접 물건을 업데이트해야합니다. 잡을 수없는 것들 중 하나는 NSError에 대한 모든 언급입니다. NSError를 Error로 변환해야하는 몇 개의 장소가 누락됩니다.

func saveContext() -> Error? { 
    do { 
     try context.save() 
     return nil 
    } catch { 
     return error 
    } 
} 

또는 catch 한 단계 위로를 구현하고이된다 :

func saveContext() -> Error?{ // remove the `NS` from Error here. 
    do { 
     if context == context { // this is always true, remove it. 
      try context.save() 
     } 
    } catch { // remove the `let error as! NSError?` from here 
     print("error saving core data: \(error)") 
     return error 
    } 
    return nil 
} 

이 함수의 간단 버전입니다

func saveContext() throws { 
    try context.save() 
} 
+0

Daniel 감사합니다, 그것이 작동합니다! –

관련 문제