質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

534閲覧

RealmSwift の primaryKey に Date型 無理?

sugidodan

総合スコア26

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/03/28 09:56

編集2019/03/31 05:01
@objc dynamic var ymd: Date = Date() override static func primaryKey() -> Date?{ return "ymd" }

だと build 不可

@objc dynamic var ymd: Date = Date() override static func primaryKey() -> String?{ return "ymd" }

だと build 可 ですが実行時にAbend します。

現在、

@objc dynamic var ymd: String override static func primaryKey() -> String?{ return "ymd" }

動作しています。

動けばいいってもの?なんなので

お知恵を拝借

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/03/29 01:01

コードは ``` で囲って下さい。 https://teratail.com/help#about-markdown あと、return "ymd" ではなく return ymd ですかね? コードは実際のコードをコピペするようにして下さい。
sugidodan

2019/03/31 05:02

return ymd だと build です。
fuzzball

2019/04/01 01:52 編集

「build です」というのはどういう意味でしょうか?
sugidodan

2019/04/02 12:51

うつまつがいでした。 build failed です
guest

回答1

0

RealmSwift.Objectに以下の定義があります。

Swift

1/** 2Override this method to specify the name of a property to be used as the primary key. 3 4Only properties of types `String` and `Int` can be designated as the primary key. Primary key properties enforce 5uniqueness for each value whenever the property is set, which incurs minor overhead. Indexes are created 6automatically for primary key properties. 7 8- returns: The name of the property designated as the primary key, or `nil` if the model has no primary key. 9 */ 10 @objc open class func primaryKey() -> String? { return nil }

primaryKey()は、Realmライブラリがプライマリキーに使用するプロパティの名前を取得するためのfuncです。
従って、名前(String)しか返せません。
また、実際にプライマリキーとして使用できるのは、String型かInt型のプロパティなので、Date型のプロパティ名を指定すると、実行時にRealmライブラリ内で処理ができずに落ちます。

投稿2019/03/28 10:25

dsuzuki

総合スコア1682

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugidodan

2019/03/29 00:03

ありがとうございます。 やっぱり、そうなんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問