퇴근 직전 발생한 이슈를 기록합니다.
Crashlytics 리포팅된 위치에서 재현이 안돼...
재현 가능/불가능의 차이는 OS 버전이었습니다.
Crashlytics에 리포팅된 기기 사양이 모두 iOS 14였고, 테스트 기기로 iOS 14, iOS 15를 각각 확인한 결과, 해당 이슈는 iOS 14버전에서 발생하는 문제로 파악되었습니다.
Thread1 SIGABRT 만 발생하고, 상세 오류 로그가 없...
문제의 원인은 명확히 타입을 명시하지 않았기 때문이었습니다.
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에서는 이슈가 없다가 지금 이슈가 발생했는지 이유를 모르겠습니다.
언제든 피드백 부탁드립니다.