0

したがって、コンテキストは、レルムオブジェクトを作成し、その変数の1つに値を与えているということです。これを行うには、先に進んでこのオブジェクトのインスタンスを呼び出し、サーバーに接続して値を取得し、次のように言います

    let someObject = someObjectClass() //this being a realm object class

    someQuerySuccessBlock { (success, error) -> void in
        ...
        if let someValue = objects[0].value {
            someObject.id = someValue    //this line is where the issue is
        }
        ...
    })

    let realm = RLMRealm.defaultRealm()
    realm.beginWriteTransaction
    realm.addObject(someObject)
    realm.commitWriteTransaction

llvm のエラーは error: execution was interrupted, reason: ブレークポイント 1.2 です。すべての例外に対してブレークポイントを作成しない限り、エラーは表示されません。

また、コードがコンパイルされ、実行され、クラッシュが発生しないことに注意してください (ただし、単に..その特定の行以降のコードを実行しないでください。someObject は保存および作成されますが、割り当てられるフィールドは単純に割り当てられます)。配属されなかったなど

4

2 に答える 2

0

保存されたオブジェクトの主キーを編集しようとすると、アサーションが発生します。Realm の主キーは不変です。ユース ケースの正確なニーズに応じて、オブジェクト クラスの新しいインスタンスを作成し、保存する必要があるすべての新しいプロパティを割り当てることができます。この新しいオブジェクトを追加してから、 を使用して書き込みトランザクションに追加できます-createOrUpdateInRealm:withValue:。注: 対 1 の関係やその他の null 値を許容するプロパティには注意してください。これは、null 値が上書きされるマージ戦略がここにあるためです。

于 2015-11-03T20:15:43.203 に答える