NCMB(ニフクラ mobile backend)のSwift SDKを使えば、SwiftUIアプリなどでの開発がとても楽に行えるようになります。
しかし、データストア(データベース)のオブジェクトを使っている時に、直接データを指定すると表示できないという問題に遭遇しました。
現象
たとえば次のようにしてテキストを表示しようとしました。データストアでは文字列以外の情報も扱えたり、キー内のデータが nil であることもあるので ??
を使って代替の文字列を用意しています。
Text(thread["title"] ?? "")
これを実行すると、テキストが表示されません。
解決策
解決策としては as String
を付けることでした。
Text((thread["title"] ?? "") as String)
このようにすると、テキストが表示されるようになります。
注意点
ObservableObjectとして定義した際にはこのような状況になった覚えがないので、ViewのStateとしてデータストアを定義した時に起こる可能性があります。Xcodeは12.5.1、Swift 5.4.2で発生しています。なお、Viewの中でfunを定義して、そこから返す場合には問題ありませんでした。
まとめ
テキスト(に限らないと思いますが)がうまく出ないときには、この方法を使ってみてください。