SERVER_URLからデータをダウンロードし、ローカルデータベース - Realmに保存しています。 このデータベースのリストに項目を表示しようとしていますが、エラーが発生しています。私はいくつかのヒントに感謝するつもりです。iOS - Realmのアイテムリストを表示
Alamofire.request(SERVER_URL).responseJSON { response in
let items = [Item].from(jsonArray: response.result.value as! [Gloss.JSON])
print(items?[0] as Any)
for item in items! {
let itemRealm = ItemRealm()
itemRealm.id = item.id!
itemRealm.name = item.name!
itemRealm.desc = item.descr!
itemRealm.icon = item.icon!
try! self.realm.write {
self.realm.add(itemRealm)
}
}
}
let items = realm.objects(ItemRealm.self)
print(items[0])
エラー - >は.....クラスAppDelegateに私を指示される - >スレッド1:信号SIGABRT
コンソールのエラーログ:
2017年2月1日16:51:20.701 iOSRecruitmentTest [15958:982747] *キャッチされていない例外 'RLMException'のためアプリを終了します。理由: 'インデックス0が範囲外です(0未満である必要があります)' *ファーストスローコールスタック:.... のlibC++ abi.dylib:
私が持っていたアイテム= realm.objectsを聞かせて変換するために:あなたは、この例ではあなたのような何かをすることにより、容易にそれを達成することができますすることができた場合にサイドノートで
は、またrealm.write
の数を制限しよう(ItemRealm.self)を_ = self.realm.objects(ItemRealm.self)に追加しました。これは、以前の値との定義の競合のエラーが発生したためです。これはうまくいくように思えますが、アプリをもう一度やり直したいときは以前と同じエラーが出るので、それを削除して新鮮なものを実行する必要があります。だから初めてのことです。あなたのご意見ありがとうございます。閉鎖後に何とかデータを削除する必要がありますか? – Vuko私は自分の答えを編集しました.Json結果を印刷したくないので、レルムオブジェクトを印刷したいと思います。私はあなたが達成しようとしていることを正確には知りませんが、このようなエラーがあれば、オプションを__safely unwrapして__error cases__を追加することをお勧めします。実際のコードで応答が空の場合、アプリケーションはクラッシュします。 –
おい、ありがとう。それは非常に役に立ちます。私は単純なリストとデータベースとしての使用領域でいくつかのテストを行っています。私はviewDidLoad()に私のネットワーク接続を入れているので、クラッシュの問題が起こっていると思う。私が間違っているなら、私を訂正してください。今私はエラーログを読むことによって考える:データが保存されるので、再実行したときに再びダウンロードされ、 "id" = 0が既に存在する。それはクラッシュを説明します。 – Vuko