48258


### 前提

iOSアプリ  
Swift 4 を使用  
Realm を使用

### 実現したいこと

Realmにおいて、ネストされたプロパティを含めてunmanagedにしたいのですが、その方法がわからず、アドバイスを頂ければと思っております。

現状以下のようなオブジェクトを定義しています。

[code]

    import RealmSwift
    
    class RouletteDataset: Object {
        @objc dynamic var id = 1
        @objc dynamic var titile = "ルーレット"
        var items = List<RouletteItemObj>()
    
        override class func primaryKey() -> String? {
            return "id"
        }
    }
    
[/code]

⏬Listの要素であるオブジェクト

[code]

    import RealmSwift
    
    class RouletteItemObj: Object {
        @objc dynamic var colorHex = "FF9300"
        @objc dynamic var itemName = "アイテム"
        @objc dynamic var ratio: Double = 1
    }
    
[/code]

RouletteDatasetのデータをRealmから取得し、任意のデータ（例えば１件目）をmanaged object から unmanaged
にする為には以下のようにすれば良いと思いますが、

[code]

    let unmanagedObject = Object(value: existingObject)
    
[/code]

RouletteDatasetのitemsようにさらに別のObjectがネストされている場合には、それらはmanaged objectのままであるようです。

Realm Swiftでネストされたmanaged objectをunmanagedにするにはどうしたら良いのでしょうか？？  
回答頂けると嬉しいです。


CC BY-SA 4.0
2018-09-10T00:37:05.720
48241
2018-09-10T14:14:33.713
2018-09-10T01:02:22.277
3060
30049
question
swift ios xcode realm
managed object を unmanaged にしたい


組み込みで用意されている方法はありません。自分でネストしたオブジェクトを辿ってコピーするコードを書く必要があります。

ただ、現在はわざわざオブジェクトをコピーする必要はほとんどないと思います。

もしスレッドをまたぎたい、ということが目的であれば、先のスレッドでオブジェクトをフェッチし直すか、`ThreadSafeReference`を使えばそのままスレッドをまたいだオブジェクトの受け渡しができます。


CC BY-SA 4.0
2018-09-10T14:14:33.713
48258
2018-09-10T14:14:33.713
5519
48241
answer