タイプ 'NSTaggedPointerString' の値を 'NSNumber' にキャストできませんでした。
2023-09-21 14:26:55
質問
このようなSwiftの構造体を持っています。
struct Usage {
var totalData: Double
var remainingTotalData: Double
init(jsonData: NSData) {
var jsonDict = [String: AnyObject]()
do {
jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
} catch {
print("Error occurred parsing data: \(error)")
}
totalData = jsonDict["totalfup"] as! Double
remainingTotalData = jsonDict["totalrem"] as! Double
}
}
APIから、以下のようなJSONのレスポンスが返ってきます。これは
jsonDict
変数の出力です。
[
"totalfup": 96.340899,
"totalrem": 3548710948
]
の値を代入しようとすると
totalfup
というプロパティに
totalData
を追加すると、このエラーが発生します。
タイプ 'NSTaggedPointerString' の値を 'NSNumber' にキャストできませんでした。
誰か理由を知っていますか?私は、プロパティの種類を
float
に変更し、構造体全体をクラスに変更してみましたが、まだ問題が発生しています。
どのように解決するのですか?
エラーの原因は
jsonDict["totalfup"]
が文字列であること (
NSTaggedPointerString
のサブクラスで
NSString
のサブクラス)なので、StringをDoubleに変換する必要があります。
強制アンラップする前に、必ず例外をキャッチし、型をチェックしてください!
totalData = (jsonDict["totalfup"] as! NSString).doubleValue
について
安全性
を使用すると
if let
:
// check dict["totalfup"] is a String?
if let totalfup = (dict["totalfup"] as? NSString)?.doubleValue {
// totalfup is a Double here
}
else {
// dict["totalfup"] isn't a String
// you can try to 'as? Double' here
}
関連
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。