unexpectedly found nil while unwrapping an Optional value


データベースに値を入れてそれを`TableView`に出力しようとしたのですが、`TableView`には何も表示されませんでした。なのでデータベースに入っている値を確認しようと以下のコードの`println("data:
\\(wordData)")`の行でログを出力しようとすると、「`unexpectedly found nil while unwrapping an
Optional
value`」というエラーが返ってきました。これは以下のコードでは配列の中身が`nil`になっているという認識でよろしいでしょうか？ということはデータベースに値が入っていないということでしょうか？しかしデータベースの中身を確認できるツールで確認したところ、確かに値は入っていました。  
どうすればデータベースの値を取ってくることができるでしょうか？どなたか分かる方に教えていただきたいです。すみませんが、よろしくお願いします。

[code]

        func outputWord(speech: String) -> Array<String> {
            var wordData: [String]! = []
            let wordArray = Word.objectsWhere("speech CONTAINS %@", speech)
    
            for item in wordArray {
                if let wordStore = item as? Word {
                    wordData.append(wordStore.speech)
    
                    println("data: \(wordData)")
                }
            }
    
            return wordData
        }
    
[/code]




おそらく、Wordクラスのプロパティにdynamic修飾子が付いていないことが原因です。  
Wordクラスの定義が下記のご質問にて書かれているものと同じだとすると、

['RLMResults' is not convertible to
'RLMObject'](https://ja.stackoverflow.com/questions/8782/rlmresults-is-not-
convertible-to-rlmobject)

[code]

    class Word: RLMObject {
        var id = 0
        var speech = ""
        var word = ""
    
        override class func primaryKey() -> String {
            return "id"
        }
    }
    
[/code]

それを次のように、各プロパティにdynamic修飾子を付加するように書き換えます。

[code]

    class Word: RLMObject {
        dynamic var id = 0
        dynamic var speech = ""
        dynamic var word = ""
    
        override class func primaryKey() -> String {
            return "id"
        }
    }
    
[/code]

これで、`wordData.append(wordStore.speech)`の行で正しく値が取得できるようになると思いますので、`println`の行でクラッシュすることはなくなります。




おそらく、Wordクラスのプロパティにdynamic修飾子が付いていないことが原因です。  
Wordクラスの定義が下記のご質問にて書かれているものと同じだとすると、

['RLMResults' is not convertible to
'RLMObject'](https://ja.stackoverflow.com/questions/8782/rlmresults-is-not-
convertible-to-rlmobject)

[code]

    class Word: RLMObject {
        var id = 0
        var speech = ""
        var word = ""
    
        override class func primaryKey() -> String {
            return "id"
        }
    }
    
[/code]

それを次のように、各プロパティにdynamic修飾子を付加するように書き換えます。

[code]

    class Word: RLMObject {
        dynamic var id = 0
        dynamic var speech = ""
        dynamic var word = ""
    
        override class func primaryKey() -> String {
            return "id"
        }
    }
    
[/code]

これで、`wordData.append(wordStore.speech)`の行で正しく値が取得できるようになると思いますので、`println`の行でクラッシュすることはなくなります。

