25214


現在、野球のDBアプリを作っております。  
バッターとピッチャーのデータをRealmSwiftに登録し、  
続いて、バッターのバッティングの詳細を設定しようとしています。  
以下がバッターとバッティングの初期設定です。

[code]

    import UIKit
    import RealmSwift
    
    class Batter: Object {
        dynamic var team = ""
        dynamic var name = ""
        dynamic var age = ""
        dynamic var category = 0
        dynamic var tall2 = 0
        dynamic var body = 0
    
        let battings = List<Batting>()
    }
    
    class Batting: Object {
        let battings = List<Batting>()
    
        //打撃入力用変数 (RealSwift)
        dynamic var batDate = ""
        dynamic var gamesCount = 0
        dynamic var batterBoxSide = 0
        dynamic var battingsCount = ""
        dynamic var pitchersTeam = ""
        dynamic var pitchersName = ""
        dynamic var firstRunner = 0
        dynamic var secondRunner = 0
        dynamic var thirdRunner = 0
        dynamic var ballsCount = 0
        dynamic var strikesCount = 0
        dynamic var outsCount = 0
        dynamic var tamakazusCount = 0
        dynamic var pitchingJudge = 0
        dynamic var locateXX = 0
        dynamic var locateYY = 0
        dynamic var kyuushusCase = 0
        dynamic var dousasCase = 0
        dynamic var kekkasCase = 0
        dynamic var dakyuushu = ""
        dynamic var hokyuuPlayer = ""
        dynamic var kekkasCase2 = ""
        dynamic var dakyuuHoukou = ""
        dynamic var locateX1 = 0
        dynamic var locateY1 = 0
        dynamic var gidaCase = ""
        dynamic var datenCase = 0
        dynamic var kekkasCase3 = ""
    
        var batters: [Batter] {
            return linkingObjects(Batter.self, forProperty: "battings")
        }
    }
    
[/code]

最後の部分、

[code]

    return linkingObjects(Batter.self, forProperty: "battings")
    
[/code]

で、

[code]

    ‘linkingObjects(_:forProperty:)’ is deprecated: Use a LinkingObjects property
    
[/code]

と怒られてしまいました。

バッターが一でバッティングが多になるため、この設定はどうしても必要です。  
ネットで調べ、Xcodeで試し、問題ないと判断して、製作中のSwiftに書き込んだのですが、  
何故か製作中のコードにこのエラーが出ました。  
（テストコードには出ませんでした）

まだ、このDBを使って何かをしているわけではないので、このまま進めて良いのか？も不明です。


CC BY-SA 3.0
2016-05-27T03:18:58.240
25210
2016-05-27T04:42:15.343
2016-05-27T04:32:00.293
5519
13156
question
swift realm
RealmSwiftの一対多の初期設定について質問です。


`return linkingObjects(Batter.self, forProperty:
"battings")`という書き方は古い書き方なので、新しい表記法を使ってください、という警告です。  
警告なのでエラーではありませんが、最新のバージョンではすでにその書き方はできなくなっているのと、新しい書き方の方が、いろいろと便利になっているので、新しい書き方に変えたほうがいいです。

[code]

    var batters: [Batter] {
        return linkingObjects(Batter.self, forProperty: "battings")
    }
    
[/code]

の部分は、以下のように書き換えられます。

[code]

    let batters = LinkingObjects(fromType: User.self, property: "battings")
    
[/code]

新しい書き方のメリットは、計算済みプロパティから普通のプロパティになったので、逆方向の関連に対して、検索条件を指定できるようになったとか、自動更新が有効になるとか、そういう点です。  
詳しくは、 <https://realm.io/jp/news/realm-objc-swift-0.100.0/> を読みましょう。

質問とは関係ないですが、おそらく

[code]

    class Batting: Object {
        let battings = List<Batting>()
    
[/code]

上記の`let battings = List<Batting>()`は不要ではないかと思います。普通こういうモデリングはしませんので。

また、`LinkingObjects`についてもおそらく勘違いされていると思います。たぶん、その定義は必要なくて、`Batter`クラスの`let
battings = List<Batting>()`だけで十分ではないかと思います。


CC BY-SA 3.0
2016-05-27T04:42:15.343
25214
2016-05-27T04:42:15.343
5519
25210
answer