前提・実現したいこと
personというクラスのarrayというインスタンスの配列の中に人の名前が入っています。
languageというクラスにその人が話せる言語のインスタンスの配列があります。
textFiledにはPickerViewをインプットしていてPickerViewで返す配列がpersonクラスのArrayという配列です。
そのPickerViewから選択したAという文字がtextFiledに入っている場合、下のPickerViewnにはlanguageクラスのAという配列を返したいです。
どうすれば取得できますか?
クラスにしなくてもViewControllerのクラスにlanguageクラスの配列を定義して、返したい配列の名前で定義でに一致したら返すということはできるのですが、それだとViewcontorllerのコードが長くなりすぎるので別のクラスを作り呼び出しています。
該当のソースコード
swift
1class person: NSObject { 2 let array = ["A","B","C","D","E","F","G","H"] 3}
swift
1class language : NSObject { 2 let A = ["Japanese"] 3 let B = ["English"] 4 let C = ["Japanese","French"] 5 let D = ["Italian"] 6 let E = ["English","Spanish"] 7 let F = ["Chinese","Japanese"] 8 let G = ["Korean","Japanese","English"] 9 let H = ["German","Spanish"] 10
試したこと
下記のコードのように手入力していたが、personArrayが1000近くあるのでコードが長くなりすぎる
swiff
1swift text { 2 case "A": 3 pickerArray = language().A 4 case "B": 5 pickerArray = language().B 6 case "C": 7 pickerArray = language().C 8 case "D": 9 pickerArray = language().D 10 case "E": 11 pickerArray = language().E 12 case "F": 13 pickerArray = language().F 14 case "G": 15 pickerArray = language().G 16 case "H": 17 pickerArray = language().H 18 19}
personとlanguageを別クラスにする必要があるのでしょうか?
let "A" = ["Japanese"]
ってなんでしょうか?エラーになりますよね?
なぜNSObjectを継承しているのでしょうか?
PickerViewの画像はどういう意味があるのでしょうか?
すみません、let A = ["Japanese"]の間違いでした。
personというクラスにarrayという配列を持たせ、その配列を上のTextFieldにinputViewしてあるPickerViewに返しているからです。 そこで選択した文字に合わせて下のPickerViewに返す配列をクラスから取得したいです。 違うクラスにする必要はないのですが、personクラスがとても長いためもう一つクラスを作ってます。
数が膨大だからこそ、対になるデータはまとめておくべきではないですか?
それとも、personとlanguageは1対1ではないのでしょうか?
personとlanguageは1対1です。 説明不足ですみません。
コードが長いので違う場所に保存した方がいいのかなと思い分けていました。
そもそもで言うと、1000件もあるならcsvなりdbなりで「データ」として別に持つべきだと思います。
回答2件
あなたの回答
tips
プレビュー