2014-09-24 58 views
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的属性的对象。

+0

“这是我的理解,我不能使用'=='运算符来比较像我以前在Obj-C中使用的对象。”只有在该类型没有'=='运算符的情况下才是如此。 – newacct 2014-09-25 21:53:52

回答

5

您可以将swift中的对象与“===”相同的运算符进行比较。

相关问题