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

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

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

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

Q&A

解決済

3回答

916閲覧

要素を用いて配列からindex番号を取得する方法について

RITA

総合スコア18

Swift

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

0グッド

1クリップ

投稿2018/05/28 10:54

編集2018/05/28 10:56

質問

例えば以下のようなUserクラスの配列userArrayからuser2を用いてindex番号を取得したい場合、どのようなメソッドを使えばうまくできるでしょうか。

Swift4

swift4

1class User { 2 var name : String 3 var age : Int 4 5 init(name: String,age:Int) { 6 self.name = name 7 self.age = age 8 } 9} 10 11var userArray: [User] 12 13let user1 = User(name: "Yamada", age: 22) 14let user2 = User(name: "Tanaka", age: 24) 15let user3 = User(name: "Kagawa", age: 26) 16 17userArray = [user1,user2,user3]

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

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

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

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

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

fuzzball

2018/05/30 02:33 編集

user1 も user2 と同じく User(name: "Tanaka", age: 24) だった場合に、user2を用いて取得するindex番号は何を期待しているでしょうか?0でしょうか?1でしょうか?
guest

回答3

0

ベストアンサー

クラスにEquatableを実装すればindex(of:メソッドが使えます。

swift

1 2class User { 3 var name : String 4 var age : Int 5 6 init(name: String,age:Int) { 7 self.name = name 8 self.age = age 9 } 10} 11 12extension User: Equatable { 13 public static func ==(lhs:User, rhs:User) -> Bool { 14 return lhs.name == rhs.name && lhs.age == rhs.age 15 } 16} 17 18 19var userArray: [User] 20 21let user1 = User(name: "Yamada", age: 22) 22let user2 = User(name: "Tanaka", age: 24) 23let user3 = User(name: "Kagawa", age: 26) 24 25userArray = [user1,user2,user3] 26 27let index = userArray.index(of: user2) 28//=> 1

投稿2018/05/28 11:20

_Kentarou

総合スコア8490

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

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

miyabi_takatsuk

2018/05/30 02:15

カスタムクラスなのに一発でやる方法あったんですね・・・。 勉強になりました。
guest

0

カスタムクラスの配列でも、
プロパティで検索をかけたindexメソッドで、indexを取得できます。

swift

1let user2Index = userArray.index(where: {$0.name == user2.name})

投稿2018/05/30 02:21

編集2018/05/30 02:35
miyabi_takatsuk

総合スコア9528

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

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

0

投稿2018/05/28 11:08

mather

総合スコア6753

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

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

miyabi_takatsuk

2018/05/30 02:39

カスタムクラス型の配列には、このメソッドは使えませんよ。 [String]や[Int]など、Swift言語にもともと存在するクラス型の配列でないと、このメソッドは使えません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問