2016-04-06 1 views
0

У меня возникает странная проблема при извлечении данных из последнего элемента в объекте JSON. В принципе, у меня есть 14 пунктов возвращаются, но когда я пытаюсь захватить элемент из последнего пункта, он говорит, что я только 10. Вот мой код:Alamofire + SwiftyJSON не получает последний элемент в объекте JSON

Alamofire.request(.GET, "http://xyz.herokuapp.com/api/v1/purchases/", parameters: ["login_user": "[email protected]", "login_password": "test123"]) 
     .responseJSON { response in 
      switch response.result { 
      case .Success(let data): 
       let json = JSON(data) 
       let dispenseToken = json["purchases"]["purchases".length-1]["dispense_token"] 
       print(json["purchases"]["purchases".length]) 
      case .Failure(let error): 
       print("Request failed with error: \(error)") 
      } 

покупок JSON возвращает объект следующим образом:

purchases =  (
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 759316; 
     dispensed = 1; 
     id = 2; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 41277; 
     dispensed = 1; 
     id = 1; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 877725; 
     dispensed = 1; 
     id = 3; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 5379; 
     dispensed = "<null>"; 
     id = 4; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 246309; 
     dispensed = "<null>"; 
     id = 5; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 573469; 
     dispensed = "<null>"; 
     id = 6; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 770184; 
     dispensed = "<null>"; 
     id = 7; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 199976; 
     dispensed = "<null>"; 
     id = 8; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 531909; 
     dispensed = "<null>"; 
     id = 9; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 608240; 
     dispensed = "<null>"; 
     id = 10; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 843961; 
     dispensed = "<null>"; 
     id = 11; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 938967; 
     dispensed = "<null>"; 
     id = 12; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 212041; 
     dispensed = "<null>"; 
     id = 13; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    }, 
      { 
     "credit_card_id" = "<null>"; 
     "dispense_token" = 204030; 
     dispensed = "<null>"; 
     id = 14; 
     "machine_id" = 1; 
     "payment_type" = "<null>"; 
     reserved = "<null>"; 
     "user_id" = 1; 
    } 
); 

Но когда я печатаю JSon [ "покупки"] [ "покупки" .Length], это результат я получаю:

{ 
    "reserved" : null, 
    "machine_id" : 1, 
    "id" : 10, 
    "payment_type" : null, 
    "dispense_token" : "608240", 
    "user_id" : 1, 
    "credit_card_id" : null, 
    "dispensed" : null 
} 

есть идеи? Спасибо!

ответ

1

"purchases".length не то, что вы хотите использовать. "purchases".length означает, что length струнного не последний элемент массива ... («покупка» имеет 9 символов, и именно поэтому вы получите 10-элемент в списке.)

Вы хотите использовать .arrayValue.last вместо этого. Попробуйте json["purchases"].arrayValue.last

+0

Большое вам спасибо, вот и все! Вы совершенно правы, мне следовало бы лучше узнать, как работают Струны. – Kaidao

Смежные вопросы