首页 > 解决方案 > 如何快速过滤类属性的属性

问题描述

I have problem to filter an array of station aroundStreet I know about map but I need when choosen string is equal to around street return All info about MetroLine Class that contain line,intersection ,....


class Name{
    var farsiName:String
    var englishName:String

    init(farsi:String,english:String) {
        self.farsiName = farsi
        self.englishName = english
    }
}
class Station{
    var name:Name
    var isintersection:Bool
    var aroundStreet:[String]

    init(name:Name,aroundStreet:[String],isintersection:Bool) {
        self.name = name
        self.aroundStreet = aroundStreet
        self.isintersection = isintersection

    }
}

class MetroLine{

    var name:(origin:Name,deste:Name)
    var lineNumber:Int
    var station:[Station]
    var intersection:[Name]
    var lineColor:UIColor

    var numberStations:Int{
        return station.count
    }

    init(name:(origin:Name,deste:Name),lineNumber:Int,station:[Station],intersection:[Name],lineColor:UIColor){

        self.lineNumber = lineNumber
        self.station = station
        self.intersection = intersection
        self.lineColor = lineColor
        self.name = name
    }

}

我试试这段代码

var MetroBankArray = [MetroLine]()

func findUserLocation(origin:String)->Void{
        let new = MetroBankArray.map({$0.station.map({$0.aroundStreet.filter({$0 == origin})})})


    }

输出

[[["nabard"]]]

标签: swiftxcode

解决方案


您可以实现搜索功能以返回电台列表。请注意,为了更好的可读性,我更改了站点中的站点。

class MetroLine {

var name:(origin:Name,deste:Name)
var lineNumber:Int
var stations:[Station]
var intersection:[Name]
var lineColor:UIColor

var numberStations:Int{
    return stations.count
}

init(name:(origin:Name,deste:Name),lineNumber:Int,stations:[Station],intersection:[Name],lineColor:UIColor){

    self.lineNumber = lineNumber
    self.stations = stations
    self.intersection = intersection
    self.lineColor = lineColor
    self.name = name
}

func searchStationAround(street: String) -> [Station] {  // All stations around
    var listOfStations =  [Station]()
    for station in stations where station.aroundStreet.contains(street) {
        listOfStations.append(station)
    }
    return listOfStations
  }
}

您可以通过首先将所有街道名称转换为小写来使其更加健壮……</p>


推荐阅读