Swift: CoreDataのモデルで、数値を扱うときにハマったことと、Realmとの比較(簡単に)。
結局、前回のRealmの記事の最後に書いていた、実機で動かそうとすると「-lc++のライブラリが見つからないよ」って言われて動かない問題が解決できなくって、CoreData使うことにしました。逃げてしまいましたね。まだ発展途上でバグが多くて、初心者の自分にはきつかったです。
CoreData導入の参考にしたサイトは下記です。qiita.com
さて、CoreDataを取り扱うときにModelを以下のように決めました。
class Item: NSManagedObject { @NSManaged var title:String @NSManaged var created:Double }
このcreatedがDoubleをしたせいで、createdをキーとして検索したいときがあったのですが、うまく動かなくて困り果ててました。ただ、どっかの記事に数値を扱うときはNSNumberを使えと書いてあったような記憶がかすかにあったので、以下のように変更してみました。
class Item: NSManagedObject { @NSManaged var title:String @NSManaged var created:NSNumber //ここ変更しました }
これで検索かけるとうまく動いて助かりました。数値(IntとかDoubleとか)は、Model側では「NSNumber」にしておかないとうまく動作しないようです。ただ、「XX.xcdatamodeld」のほうは、IntやDoubleにしておいて大丈夫ですね。NSNumberないですし。
CoreDataとRealmを軽く触ってみての感想ですが、
Realmの簡単にデータベースを扱える感じがやばいですね。
コード量が全く違います。データベースから全レコードを取ってくるのは、Realmなら一行で終わっちゃいます。
let items = Item.allObjects()
この手軽さは最高なので、開発者の方々に頑張って早く安定版を出してほしいですね。