테스트 프로젝트에는 일부 테스트 도우미 기능이있는 확장이 있습니다. 이렇게 :
extension Employee {
static func mockDict() -> Dictionary<String, Any>! {
return ["ID": arc4random() % 1000,
"FirstName": "Employee First Name",
...]
}
}
(불필요한 코드를 제거했습니다). 아직 알 수없는 이유로이 사전에서 ID에 액세스하는 데 문제가 있습니다. 캐스팅 할 때 SIGABRT 6이 있습니다.
employeeDict["ID"] as! Int
Xcode 디버거 콘솔도이 특정 정수를 좋아하지 않습니다.
문자열은 잘 작동합니다. 그러한 문제가 발생 했습니까? 어떤 아이디어?
편집 : 누군가가이 문제에 직면 할 경우를 대비하여. UInt32 / Int32에서 Int 로의 캐스팅은 설계 상 실패합니다. 객체가 Any
또는 그 Anyobject
사이 에 캐스팅 된 경우에도 . 그래도
@available(*, message: "Converting UInt32 to Int will always succeed.")
public init?(exactly value: UInt32)
Int의 선언에서
public struct Int : SignedInteger, Comparable, Equatable {
...
}
과
public struct Int32 : SignedInteger, Comparable, Equatable {
...
}
JSON 직렬화에서이 동작이 발생할 수있는 사람들을 위해 편집 2. 예, NSInvalidArgumentException
Invalid type in JSON write (_SwiftValue)
UInt32, Int64 또는 Int 이외의 Integer 프로토콜 인스턴스를 직렬화하도록 요청 하면 직렬화가 오류와 함께 실패합니다.
이 시도:
let a = employeeDict["ID"] as! UInt32
let number = Int(a)
이제를 사용 number
하여 모든 작업을 수행 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다