私はRealmを使用していますが、プロジェクトのバージョンは1.0.0です。私は(ウェブAPIから得られたデータで)レルムObject
のリストを作成する場合Swift Realmが書き込みブロックにオブジェクトを再追加しようとしています
、その後、構造体で、このユーティリティ関数を使用してレルムにそれらを保存しよう:
static func saveRealmObjects(objects: [Object]) {
defer {
// Never entered
}
for object in objects {
let realm = try! Realm()
do {
try realm.write {
print("TEST: 1: object: \(object)")
realm.add(object)
print("TEST: 2")
}
} catch {
// Never entered
}
}
}
(ドンしてください正確な構造で私を判断していない、私は何かが動作するかどうかを見て周りに行ってきた)。
私は、関数がTEST: 1
に大丈夫取得しますが、私は関数に渡すリストでは非常に最初のObject
ため、TEST: 2
にそれを作るために失敗したことをprint文(主に上記削除)のリベラルな使用から伝えることができます。
私はデータを使って初めてこの機能を使用することに注意してください(シミュレータをワイプしてからアプリケーションを再起動した後に)。しかし、Object
を再作成してもう一度保存しようとすると、 。
RealmはObject
で秘密鍵を使用し、必要に応じてすべてを上書きすると仮定しました。しかし、それはちょうど立ち往生するようです。その後
は - -
それが立ち往生しています後 - 私は試してみて、(異なるRealm
オブジェクトを使用して)レルムからの結果の別のセットを取得する場合、私は次のエラーを取得する:
libc++abi.dylib: terminating with uncaught exception of type realm::InvalidTransactionException: Cannot create asynchronous query while in a write transaction
FYI私は、 [使用して異なるRealm
オブジェクトを作成するm個try! Realm()
-
参考のために、ここで私が保存しようとしているObject
です:
import Foundation
import RealmSwift
class MyObject: Object {
// MARK: Realm Primary Key
dynamic var id: String = ""
override static func primaryKey() -> String? {
return "id"
}
// MARK: Stored Properties
dynamic var date: NSDate? = nil
dynamic var numA = 0
dynamic var numB = 0
dynamic var numC = 0
dynamic var numD = 0
dynamic var numE = 0
dynamic var numF = 0
dynamic var numG = 0
dynamic var numH = 0
// MARK: Computed Properties
var computedNumI: Int {
return numD + numE
}
var computedNumJ: Int {
return numF + numG
}
}
(。変数名が変更されました)
-
うまくいけば、私は明らかに何かをやっているが、間違い - これは初めてのRealmの使用です。
なぜそれが固執しているのか(おそらくスレッドの問題ですか?)、さらに詳しい情報が必要な場合は、回答またはコメントしてください。ありがとうございました。
realm.add(object, update: true)
:次のようになりために必要なレルムの行に追加し https://realm.io/docs/swift/latest/#creating-and-updating-objects-with-primary-keys
: