2017-01-30 13 views
0

Realm Data Libraryに奇妙な問題があります。Swift Library - Realm 2.4.1の配列に関する問題

レルムデータの配列に含まれるオブジェクトからデータを取り出すことはできませんか?あなたはこのように、単純なオブジェクトを作る

:その後

import Foundation 
import RealmSwift 

class Dog: Object { 
var index = 0 
var day = "" 

} 

、あなたは現在の型とオブジェクトのリスト作成:次に

var dog1 = Dog() 
    var dog2 = Dog() 
    var dog3 = Dog() 

    dog1.day = "one day" 
    dog1.index = 0 

    dog2.day = "two day" 
    dog2.index = 1 

    dog3.day = "three day" 
    dog3.index = 2 


    try! realm.write { 
     realm.add(dog1) 
     realm.add(dog2) 
     realm.add(dog3) 
    } 

を、あなたはそれらのオブジェクトのリストを取得しますレルムからは、それらのオブジェクトからデータを取ることができませんでした。

見てみましょう...

var dogs = realm.objects(Dog.self) 

//出力//

print("All Dogs",dogs) 

領域から作成されたオブジェクトのリストを取得します:

All Dogs Results<Dog> (
    [0] Dog { 
    index = 0; 
    day = one day; 
    }, 
    [1] Dog { 
    index = 1; 
    day = two day; 
    }, 
    [2] Dog { 
    index = 2; 
    day = three day;   
    }) 

//すべてが

後 //次の3つのコマンドと3つの出力okです
print("Dog 1",dogs[0]) 


    print("Dog 2",dogs[1]) 


    print("Dog 3",dogs[2]) 

// 3つの出力 //出力1

Dog 1 Dog { 
     index = 0; 
     day = one day; 
    } 

//出力2

Dog 2 Dog { 
    index = 1; 
    day = two day; 
    } 

//出力3

Dog 3 Dog { 
    index = 2; 
    day = three day; 
    } 

//アッパーはすべてOKですが、今の問題は

を開始
print("Dog 1 day : ",dogs[0].day) 

//出力

 Dog 1 day : 

//次

print("Dog 2 day : ",dogs[1].day) 

//出力:

Dog 2 day : 

//次

print("Dog 3 day : ",dogs[2].day) 

//出力

上部の三つのコマンドで[OK]を

//すべてが悪い

//さんは、この道も与えなかった出力

Dog 1 day : Optional("") 

// //

print("Dog 1 day : ", realm.objects(Dog.self).first?.day) 

別の方法を試してみましょうです私に何か良い

//最後にこの問題を見る方法:

let dogss = try! Realm().objects(Dog.self) 
    for i in 0..<2 { 
     let dog = dogss[i] 
     print("Dog : ", dog,"\n\n\n\n") 
     print("And just dog day : ", dog.day) 
     // ... 
    } 

//期待出力:

Dog : Dog { 
    index = 0; 
    day = one day; 
    } 
    And just dog day : one day 
    Dog : Dog { 
    index = 1; 
    day = two day; 
    } 

    And just dog day : two day 

//しかし、我々はあとがき

Dog : Dog { 
    index = 0; 
    day = one day; 
    } 
    And just dog day : 
    Dog : Dog { 
    index = 1; 
    day = two day; 
    } 
    And just dog day : 

を持っている:

だから、私はXcodeの8.2.1を使用して、SWIFT 3.これは、すべてのシミュレータで起こります。 おそらくそれは私のせいだと理解していますので、この問題を解決する手助けができたら嬉しいです!

答えて

0

dynamic修飾子を使用して組み込みタイプ(文字列、整数など)のプロパティを宣言して、Realm Swiftが基礎となるRealmファイルから値を取得するゲッターを提供できるようにする必要があります。 dynamic修飾子がない場合、Swiftコンパイラは、Realmファイルからロードされたオブジェクトのデータを含まない、基礎となるインスタンス変数へのアクセスを生成します。

+0

Lol、私はダイナミックなことを忘れています...大きな感謝! –

関連する問題