POI代表以下代碼中的興趣點。我在Swift中正確使用結構和協議嗎?
我想區分具有興趣點的路線。路線可以是東/西航線或南/北航線。
我有確定的路由是否東/西結合或南/北結合的方法:
func getRouteDirection() -> DirectionForRoute{...}
基於該方法中所確定的方向,所述方法構造一個DirectionForRoute
對象返回。此對象具有以下定義:
protocol Couplable{}
struct DirectionForRoute{
var routeDirection: String
var POIs: Couplable
init(routeDirection: String, POIs: Couplable) {
self.routeDirection = routeDirection
self.POIs = POIs
}
}
的routeDirection
變量是不言自明的,它基本上有兩個可能的值要麼"EAST/WEST"
或"NORTH/SOUTH"
之一。但是,POIs
變量稍微複雜一些。根據路線的方向我想被分配POIs
變量兩種可能的結構之一:
struct EastWestBoundPOIs: Couplable {
var eastBoundPOIs: [POI]
var westBoundPOIs: [POI]
init(eastBoundPOIs: [POI], westBoundPOIs: [POI]) {
self.eastBoundPOIs = eastBoundPOIs
self.westBoundPOIs = westBoundPOIs
}
}
struct NorthSouthBoundPOIs: Couplable {
var northBoundPOIs: [POI]
var southBoundPOIs: [POI]
init(northBoundStops: [POI], southBoundStops: [POI]) {
self.northBoundPOIs = northBoundPOIs
self.southBoundPOIs = southBoundPOIs
}
}
當getRouteDirection()
方法返回DirectionForRoute
類型的值,我不能訪問分配給最後兩個結構的內部變量POIs
變量,因爲它是Couplable
類型。
我的問題是,我是否正確地使用結構來實現我期待的目標?有一個更好的方法嗎?
P.S.如果可能的話,我想盡量避免投射。
這真的是你的代碼嗎? 'self.routeDirection = routeDirection'這一行沒有意義,因爲沒有名爲'routeDirection'的傳入參數。在我的機器上,這是一個編譯錯誤:「錯誤:爲自己分配一個屬性」。 – matt
@matt可能只是一個錯字。 'routeDirection'混合的'routeBound'。 – nathan
這是一個錯字。我修好了它。@matt –