AMRoute クラスには、AMCity クラス タイプの city1 と city2 の 2 つのプロパティがあります。多数の AMRoutes が配列 arrayOfRoutes に格納されます。新しいルートを作成するときは、まず、指定された 2 つの都市にルートが存在しないことを確認する必要があります。
この動作する Obj-C コードを翻訳するのに苦労しています:
-(void)createRouteFromCity:(AMCity*)city1 toCity:(AMCity*)city2 {
BOOL routeExists = NO; for (AMRoute *route in self.arrayOfRoutes) { if (((route.city1 == city1) && (route.city2 == city2)) || ((route.city2 == city1) && (route.city1 == city2))) { routeExists = YES; } }
Obj-C で使用していたように、'==' 演算子を使用してオブジェクトを比較することはできないと理解しています。トピックの検索中に見つけた例は、ジェネリックを示しています。
func createRoute(city1: AMCity, city2: AMCity) {
var routeExists = false
findIndex(self.arrayOfRoutes, valueToFind: <#T#>) //i am not sure how to call this?
for route:AMRoute in self.arrayOfRoutes {
println("The city is: \(route.city1.name)")
}
}
func findIndex<T: Equatable>(array: [T], valueToFind: T) -> Int? {
for (index, value) in enumerate(array) {
if value == valueToFind {
return index
}
}
return nil
}
これを私の場合に組み込む方法がわかりません。配列内の AMRoute オブジェクトを比較する必要はありません。AMRoute、city1、city2 のプロパティとして保存されているオブジェクトを AMCity オブジェクトとして比較する必要があります。