JSON をオブジェクトに解析したいのですが、次のようになっているため、AnyObject を String または Int にキャストする方法がわかりません。
0x106bf1d07: leaq 0x33130(%rip), %rax ; "Swift dynamic cast failure"
たとえば、次のように使用します。
self.id = reminderJSON["id"] as Int
ResponseParser クラスがあり、その中にあります (responseReminders は AFNetworking responseObject からの AnyObjects の配列です):
for reminder in responseReminders {
let newReminder = Reminder(reminderJSON: reminder)
...
}
次に、Reminder クラスで次のように初期化します (リマインダーは AnyObject ですが、Dictionary(String, AnyObject) です):
var id: Int
var receiver: String
init(reminderJSON: AnyObject) {
self.id = reminderJSON["id"] as Int
self.receiver = reminderJSON["send_reminder_to"] as String
}
println(reminderJSON["id"])
結果: オプション (3065522)
このような場合、AnyObject を String または Int にダウンキャストするにはどうすればよいですか?
//編集
いくつかの試行の後、私はこの解決策を思いついた:
if let id: AnyObject = reminderJSON["id"] {
self.id = Int(id as NSNumber)
}
Int および
if let tempReceiver: AnyObject = reminderJSON["send_reminder_to"] {
self.id = "\(tempReceiver)"
}
文字列用