如何追加数组。或者我如何将模型转换为nsmuttable数组

时间:2016-07-01 06:36:43

标签: ios swift nsarray objectmapper

在我的应用程序中我使用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→我可以使用这样的对象创建数组,然后手动为该对象添加值,然后将该对象添加到数组。所以,让我知道我该怎么做

1 个答案:

答案 0 :(得分:1)

您只需过滤orderdata数组,而不是循环并检查条件

let filteredArray = orderdata.filter({
    $0.isRxMedicine == 1
})

这将返回具有isRxMedicine = 1

的对象数组

注意: filteredArray中的对象类型与orderdata中的对象相同