/ / Argo: Типът не отговаря на протокола 'Decodable' - json, swift, протоколи, къри, argo

Argo: Типът не отговаря на протокола 'Decodable' - json, swift, протоколи, curry, argo

Тъкмо започвам с Арго, за да анализирам моя json отговор в обекти. Имам следния код (виж по-долу), но продължава да издава следните грешки:

Тип "Приложение" не съответства на протокол "Decodable"

Не може да се извика "curry" с списък от аргументи от тип "((applicationID: String, контакт: String, състояние: String, jobTitle: String, област: String, pay: String) -> Приложение) "

import Foundation
import Argo
import Curry

struct Application {

let applicationID: String
let contact: String
let state: String
let jobTitle: String
let area: String
let pay: String
}

extension Application: Decodable {
static func decode(j: JSON) -> Decoded<Application> {
return curry(Application.init)
<^> j <| "ApplicationID"
<*> j <| "contact"
<*> j <| "state" // Use ? for parsing optional values
<*> j <| "jobTitle" // Custom types that also conform to Decodable just work
<*> j <| "area" // Parse nested objects
<*> j <| "pay" // parse arrays of objects
}
}

Имам разширено приложение да се декодира, така че не разбирам защо получавам тази грешка.

Също така се опитах да добавя примера от страницата на Argo git hub тук: https://github.com/thoughtbot/Argo със структурен тип User, Това обаче е една и съща грешка.

Използвал съм какаови чушки за инсталиране на арго и къри. Също така почистих проекта си и рестартирахме от момента на инсталирането им. Въпреки това все още получавам тези грешки.

Някой знае ли защо това може да се случи?

Отговори:

0 за отговор № 1

Инсталирах Арго и Къри с помощта на CocoaPods. След това опитах следния код. Тя работи добре без никакъв проблем.

import UIKit

import Argo
import Curry

struct User {
let id: Int
let name: String
}

extension User: Decodable {
static func decode(j: JSON) -> Decoded<User> {
return curry(User.init)
<^> j <| "id"
<*> j <| "name"
}
}

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let stringJSON = "{"id":1, "name":"Siva"}"
let data = stringJSON.dataUsingEncoding(NSUTF8StringEncoding)

let json: AnyObject? = try? NSJSONSerialization.JSONObjectWithData(data!, options: [])

if let j: AnyObject = json {
let user: User? = decode(j)
print("user - ", user)
}
}
}