いつもお世話になっております。
以下の記事を参考にSwiftアプリ内で動作するRealmに初期データの投入をしようと考えています。
ですが、実装しようとすると、ParentSeed.swiftに「Argument type '[Child]' does not conform to expected type 'Decoder'」とエラーが出力されます。
検索すると、以下の記事が出てきたのですがいまいち理解ができません。
なにぶん、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
`class Child`がありませんが、ミスタイプでしょうか?
あなたの回答
tips
プレビュー