前提・実現したいこと
■Accountクラスを作成し、社員一覧をコンソールにログを出力する。
■Accountクラスには以下のプロパティとメソッドを定義
・プロパティ
氏名:文字列型
年齢:整数型
性別:文字列型
得意な言語:文字列型
・メソッド
男性の場合「○○君は、○○が得意な○○歳です。」と表示する
女性の場合「○○さんは、○○が得意な○○歳です。」と表示する。
発生している問題・エラーメッセージ
ViewControllerにてArrayの中身を取得して一覧表示できない。
該当のソースコード
Account
1class Account { 2 var name:String! 3 var age:Int! 4 var gender:String! 5 var language:String! 6 7 init(name:String,age:Int,gender:String,language:String) { 8 self.name = name 9 self.age = age 10 self.gender = gender 11 self.language = language 12 } 13 14 func SelfIntroduction() { 15 if self.gender == "男性"{ 16 print("(self.name!)君は、(self.language!)が得意な(self.age!)歳です。") 17 } else{ 18 print("(self.name!)さんは、(self.language!)が得意な(self.age!)歳です。") 19 } 20 } 21} 22
ViewController
1class ViewController: UIViewController { 2 override func viewDidLoad() { 3 super.viewDidLoad() 4 5 let tarou = Account(name: "太郎", age: 30, gender: "男性", language: "swift") 6 let hanako = Account(name: "華子", age: 20, gender: "女性", language: "objective-c") 7 8 let lists :Array<Any> = [tarou,hanako] 9 for list in lists { 10 //ここにリストを表示するprint文をいれたい 11 } 12 } 13}
試したこと
objective-cでは以下の表記でできたのですが、
それをswiftに置き換えることができません…
objectivec
1NSArray *lists = @[tarou, hanako]; 2 for (Account *list in lists) { 3 [list inturn];
inturnって何です?
たぶん、
let lists :Array<Any> = [tarou,hanako]
が悪いような気が。
let lists :Array<Account> = [tarou,hanako]
にすれば解決しそう?
>inturnって何です?
ややこしい表記ですみません。
objective-cでのメソッド名であり、こちらでいう「Account」メソッド にあたります。
>let lists :Array<Any> = [tarou,hanako]
>が悪いような気が。
tarou、hanakoの中にはIntとStirngが混ざっているので「Any」にしていました。
「Account」に変更し以下のprint文を挿入してみました。
```swift
for list in lists {
print(list)
}
```
そうすると以下の形式でコンソールにログが吐かれてしまい、
理想の形ではでませんでした。
```log
swift1_1_4.Account
swift1_1_4.Account
```
※swift1_1_4はプロジェクト名です。
このprint文内に「Account」を使用するかと思うのですが、
上手いことやってみたものの表示されず…
混ざってるのは「Accountの中身」であって、listsの中身はAccountです。
printだけでは無理なので、Objective-Cのコードと同じようにループ回しながら表示して下さい。
表示されました!ありがとうございます!!
ただこちらの編集依頼欄のコメントだと高評価とベストアンサーがつけられないので、
よければ回答欄に上記をコピペしていただければと存じます。
コードを書いて自己解決が良いかと思います。
全然自分のチカラではなく、fuzzballさんの助言のおかげだったので…
ただお手数だとは思うので、自己解決の欄に書かせていただきます。
ご助言ありがとうございました!
回答1件
あなたの回答
tips
プレビュー