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

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

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

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

Swift

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

Q&A

0回答

398閲覧

Realmに初期データを投入したい

shori0128

総合スコア29

Realm

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

Swift

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

0グッド

0クリップ

投稿2019/11/06 10:37

いつもお世話になっております。

以下の記事を参考にSwiftアプリ内で動作するRealmに初期データの投入をしようと考えています。

Qiita - 参考記事

ですが、実装しようとすると、ParentSeed.swiftに「Argument type '[Child]' does not conform to expected type 'Decoder'」とエラーが出力されます。

検索すると、以下の記事が出てきたのですがいまいち理解ができません。

stack overflow

なにぶん、swiftに触れるようになってから1ヶ月弱なので、エラーメッセージがどういった修正を要求してきているのかわかりません。

どなたかご教示いただけますと助かります。

よろしくお願いします。


Swiftバージョン: 5.0
Xcodeバージョン: 11.2

Parent.swift

swift

1import Foundation 2import RealmSwift 3 4class Parent: Object { 5 @objc dynamic var id: Int = 1 6 @objc dynamic var name: String? 7 @objc dynamic var insertDate: NSDate = NSDate() 8 @objc dynamic var updateDate: NSDate = NSDate() 9 10 let childs = List<Child>() 11}

Child.swift

swift

1import Foundation 2import RealmSwift 3 4class Parent: Object { 5 @objc dynamic var id: Int = 1 6 @objc dynamic var name: String? 7 @objc dynamic var insertDate: NSDate = NSDate() 8 @objc dynamic var updateDate: NSDate = NSDate() 9 10 let parents = LinkingObjects(fromType: Parent.self, property: "childs") 11}

ParentSeed.swift

swift

1import RealmSwift 2 3struct ParentSeed: RealmSeed { 4 typealias SeedType =Parent 5 static var values: [[Any]] { 6 return Parent.data 7 } 8} 9 10extension ParentSeed { 11 static func items() -> [SeedType] { 12 return values.map { val in 13 let id = val[0] as! Int 14 let t = SeedType() 15 t.id = id 16 t.name = val[1] as! String 17 let l = { (_ parentId: Int) -> [Child] in 18 let data = ChildData.get(parentId) 19 return data.map { v in 20 let d = Child() 21 d.id = v[0] as! Int 22 d.name = v[1] as! String 23 return d 24 } 25 }(id) 26 27 // ★ この部分で以下のエラーが出る ★ 28 // Argument type '[Child]' does not conform to expected type 'Decoder' 29 t.sounds = List<Child>(from: l) 30 return t 31 } 32 } 33} 34 35struct ParentData { 36 static var data: [[Any]] { 37 return [ 38 [1, "A子さん"], 39 [2, "B子さん"], 40 [3, "C子さん"] 41 ] 42 } 43} 44 45struct ChildData { 46 static let data: [Int: [[Any]]] = [ 47 1: [ 48 [1, "一郎"], 49 [2, "二郎"], 50 [3, "三郎"] 51 ], 52 2: [ 53 [4, "四郎"], 54 [5, "五郎"] 55 ] 56 3: [ 57 [6, "六郎"], 58 [7, "七郎"] 59 ] 60 ] 61 62 static func get(_ parentId: Int) -> [[Any]] { 63 return data[parentId]! 64 } 65} 66

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

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

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

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

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

MasatoUchida

2019/11/19 05:04

`class Child`がありませんが、ミスタイプでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問