programing

Swift 2, 경고 : dyld 공유 캐시에서 Objective-C 클래스 정보를로드 할 수 없습니다.

randomtip 2021. 1. 16. 09:31
반응형

Swift 2, 경고 : dyld 공유 캐시에서 Objective-C 클래스 정보를로드 할 수 없습니다.


이 문제와 관련하여 몇 가지 질문을 찾았지만 그중 어느 것도 내 문제를 해결하지 못했습니다. 이 코드를 사용하여 객체를 핵심 데이터에 저장하려고합니다 (Xcode 6 및 Simulator에서 완벽하게 작동했습니다 ...).

let fetchRequest = NSFetchRequest(entityName: "Patient")
let fetchedResults : [NSManagedObject]!
do {
    fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
    patienten = fetchedResults
}    catch {
    print("error")
}

Xcode 7 베타 및 물리적 장치에서이 프로젝트 작업을 시작하면 do-try-catch를 추가했습니다. 이제 저장 버튼을 누르면이 코드가 호출되고 앱이 정지되고 다음과 같은 결과가 나타납니다.

경고 : dyld 공유 캐시에서 Objective-C 클래스 정보를로드 할 수 없습니다. 이렇게하면 사용 가능한 유형 정보의 품질이 크게 저하됩니다.

스크린 샷

아무도 내가 어디에서 잘못되었는지 알고 있습니까?


미래에 이것을 접하는 사람을 위해, 나는 방금이 문제에 부딪 쳤고 실제로 재귀 함수에서 스택 오버플로가 발생하고 있음이 밝혀졌습니다.

분명히 setValue:forKey:NSObject를 호출하면 각 set[Key]함수가 호출 됩니다. 여기서는 섹션에 [Key]지정한 (대문자로 표시된) 이름 forKey입니다.

따라서 저처럼 다음과 같은 코드가 있으면 무한 루프와 충돌이 발생합니다.

func setName(name: String) {
    self.setValue(name, forKey: "name")
}

선택 Product>Clean

비슷한 문제가있었습니다. 기기에서 앱을 삭제했습니다. 그런 다음 XCode 메뉴에서 "Product-> Clean"을 선택합니다. 앱을 다시 실행하면 문제가 해결되었습니다.


스위프트 3 :

실제로이 문제는 입력에 유형으로 선언 된 속성이 NSError있고 컴파일러가 Error출력을 예상 할 때 자주 발생 하므로 Error일반적으로이 문제를 해결 하려면 입력 유형을 변경하십시오 .


비슷한 문제 (xCode 7, Swift 2)에서 나를 도왔던 것 :

이 질문을 읽고

또는 솔루션의 이유를 설명하지 않고 더 빨리 CoreData Entity에서 생성 된, ( -귀하의 경우)에 주석 @objc(className)NSManagedObjectSubclass달면 @objc(Patient)됩니다.

이 솔루션 (문제가 계속 나타나는 경우)은 생성 방법 NSManagedObjectSubclasses이 변경 되었으므로 xCode 7.1 / Swift 2.1에는 적용되지 않습니다 .

프로젝트를 정리 ( Product > Clean)하고 장치 / 시뮬레이터에서 앱을 삭제하여 CoreData 스토리지를 교체하는 것을 잊지 마십시오 .


let fetchRequest = NSFetchRequest(entityName: "Patient")

do {
  let fetchedResults = try managedObjectContext!.executeFetchRequest(fetchRequest)
  print("\(fetchedResults)")
} catch {
  print("error")
}

위의 코드는 저에게 효과적이었습니다. 핵심 데이터를 관리하는 방법에 문제가있을 수 있습니다.

  1. managedObjectContext실제로 생성 되는지 확인하십시오 .
  2. 핵심 데이터의 모델링 확인

참조 URL : https://stackoverflow.com/questions/31431287/swift-2-warning-could-not-load-any-objective-c-class-information-from-the-dyld

반응형