【发布时间】:2018-01-12 09:51:17
【问题描述】:
我有一个关于在数组字典数组中搜索的查询。
我正在调用 Web 服务并从服务器获取响应,响应后我创建了一个模型名称“Merchant Model”并按顺序放置所有数据。
这里是 MerchantModel
struct MerchantModel {
let idString : UInt
var squareImageUrlString : String
let rectangleImageUrlString : String
let nameString : String
let stateDescriptionString : String
}
以下是我使用 MerchantModel 从服务创建的数据
[
["D": [MerchantModel(idString: 70000032, squareImageUrlString: "http:wigroup/wiplatform/uploads/2016-09-26_153901_1474904341_68899.png?uid=1474904346379", rectangleImageUrlString: "http://latform/uploads/2016-09-26_153556_1474904156_79221.jpg?uid=1474904164349", nameString: "ABCD ", stateDescriptionString: "Active")]],
["K": [MerchantModel(idString: 22, squareImageUrlString: "http://wigroup/wigroup/wiplatform/uploads/2017-01-12_083720_1484210240_77692.jpg?uid=1484210329594", rectangleImageUrlString: "http://r/uploads/2017-01-12_084109_1484210469_83189.jpg?uid=1484210491620", nameString: "ABCD Online", stateDescriptionString: "Active")]],
["P": [MerchantModel(idString: 70000013, squareImageUrlString: "http://form/uploads/2016-11-02_093929_1478079569_70996.jpg?uid=1478079577342", rectangleImageUrlString: "http://rad2rm/uploads/2016-11-02_093948_1478079588_71976.jpg?uid=1478079594170", nameString: "XYZ \'n Pay", stateDescriptionString: "Active"), MerchantModel(idString: 70000068, squareImageUrlString: "http://igroup/wiplatform/uploads/2016-08-11_102601_1470911161_64234.png", rectangleImageUrlString: "http://roup/wiplatform/uploads/2016-08-11_102632_1470911192_47769.png", nameString: "XABCD Pay ", stateDescriptionString: "Active")]],
["R": [MerchantModel(idString: 19, squareImageUrlString: "http://group/wiplatform/uploads/2015-06-09_133237_1433856757_50883.jpg", rectangleImageUrlString: "http://raads/2015-06-09_133217_1433856737_47358.jpg", nameString: "Test", stateDescriptionString: "Active")]]
]
现在我必须对这个数组执行搜索。我把下面的代码写成
func filter(array : [[String : [MerchantModel]]], byString filterString : String) -> [[String : [MerchantModel]]]? {
return array.filter({ (dictData : [String : [MerchantModel]]) -> Bool in
let values = dictData.values
values.filter({ ([MerchantModel]) -> Bool in
$0.nameString == filterString
})
})
}
但是出现错误
“'[MerchantModel]' 类型的值没有成员 'nameString'”
请建议我如何在这个数组上执行搜索。我试图避免 Swift 中的循环(for、while 等)。
【问题讨论】:
-
在
values.filter({ ([MerchantModel]) -> Bool in $0.nameString == filterString })$0中是MerchantModel的数组。我猜MerchantModel有一个属性nameString,但[MerchantModel](一个数组)没有。 -
尝试向this寻求帮助。希望对您有所帮助。
-
@Larme 更新了我的问题。