在我的应用程序中我使用alamofire对象映射器来使用MVC结构。现在我得到一个数组,我适合它在模型类。
这是模型类
class OrderDetailSecond: Mappable {
var id : Int?
var isRxMedicine : Int?
var medicineTypeId : String?
var name : String?
var orderId : String?
var price : String?
var quentity : Int?
var strength : String?
required init?(_ map: Map){
}
func mapping(map: Map) {
id <- map["id"]
isRxMedicine <- map["is_rx_medicine"]
medicineTypeId <- map["medicine_type_id"]
name <- map["name"]
orderId <- map["order_id"]
price <- map["price"]
quentity <- map["qty"]
strength <- map["strengh"]
}
}
注意:OrderDetailSecond是一个数组
现在在orderData中,[OrderDetailSecond]我得到了那个数组
该数组有很多像这样的对象
(
{
id = 50158;
"is_rx_medicine" = 1;
"medicine_type_id" = 2;
name = "1-11~qwe";
"order_id" = 50128;
price = "<null>";
qty = 12;
strengh = "12 mcg";
},
{
id = 50159;
"is_rx_medicine" = 1;
"medicine_type_id" = 3;
name = "1-12~qwe";
"order_id" = 50128;
price = "<null>";
qty = 12;
strengh = "12 ng/dL";
}
);
现在我只想要那个“is_rx_medicine”= 1;
的对象并希望在任何特定数组中添加该对象。那我怎么能这样做呢?
这就是我的尝试。
for mytest in orderdata
{
if mytest.isRxMedicine == 1
{
self.myarray?.addObject(mytest)
}
}
注意:在这个mytest中键入OrderDetailSecond,例如let mytest:OrderDetailSecond
当我打印myarray时,显示orderpilz.OrderDetailSecond,这是我的班级名称。
当我试图像这样打印时
print(myarray?.objectAtIndex(0).valueForKey("quentity"))
它给我这个错误
*** NSForwarding: warning: object 0x1461b800 of class 'orderpilz.OrderDetailSecond' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[orderpilz.OrderDetailSecond valueForKey:]
可能的替代方案。
1→我可以使用这样的对象创建数组,然后手动为该对象添加值,然后将该对象添加到数组。所以,让我知道我该怎么做
答案 0 :(得分:1)
您只需过滤orderdata
数组,而不是循环并检查条件
let filteredArray = orderdata.filter({
$0.isRxMedicine == 1
})
这将返回具有isRxMedicine = 1
注意: filteredArray
中的对象类型与orderdata
中的对象相同