1
AMRoute類有兩個屬性,city1 & city2,類型爲AMCity類。 許多AMRoute存儲在一個數組arrayOfRoutes中。 創建新路線時,我首先需要確保兩個給定城市不存在路線。使用Equatable in Swift將對象作爲屬性進行比較
我有一個硬時間平移本工作的OBJ-C代碼:
- (無效)createRouteFromCity:(AMCity *)city1 toCity:(AMCity *)城2 {
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對象。我需要比較作爲AMCity對象存儲爲AMRoute,city1 & city2的屬性的對象。
「這是我的理解,我不能使用'=='運算符來比較像我以前在Obj-C中使用的對象。」只有在該類型沒有'=='運算符的情況下才是如此。 – newacct 2014-09-25 21:53:52