Core Data Error, Thread1 SIGABRT

1493 단어 Core DataCore Data

퇴근 직전 발생한 이슈를 기록합니다.

Problem: Core Data를 사용하는 화면에서 강제 종료 현상 발생

Issue 1

Crashlytics 리포팅된 위치에서 재현이 안돼...

Solved

재현 가능/불가능의 차이는 OS 버전이었습니다.
Crashlytics에 리포팅된 기기 사양이 모두 iOS 14였고, 테스트 기기로 iOS 14, iOS 15를 각각 확인한 결과, 해당 이슈는 iOS 14버전에서 발생하는 문제로 파악되었습니다.

Issue 2

Thread1 SIGABRT 만 발생하고, 상세 오류 로그가 없...

Solved

문제의 원인은 명확히 타입을 명시하지 않았기 때문이었습니다.
NSManagedObjectContext에서 다룰 수 있으려면 NSManagedObject를 상속받은 인스턴스이어야 합니다.

You can’t use instances of direct subclasses of NSObject, or any other class that doesn’t inherit from NSManagedObject, with a managed object context. You may create custom subclasses of NSManagedObject, although this isn’t always necessary.
...
<Apple Developer Documentation>

기존 코드를 확인해보니, 가져오려 한 데이터 타입은 String으로 NSManagedObject를 따로 구현하지 않고 있었습니다. 다음과 같이 코드 수정을 거쳐 앱을 재배포하였습니다.

// 기존 코드
context.fetch(NSFetchRequest(entityName: entityName))

// 수정 코드
context.fetch(NSFetchRequest<NSManagedObject>(entityName: entityName))




Issue 1: 이전 iOS 14에서는 이슈가 없다가 지금 이슈가 발생했는지 이유를 모르겠습니다.
언제든 피드백 부탁드립니다.

좋은 웹페이지 즐겨찾기