使用Swift Argo框架:找不到'< *>''< *>'

时间:2015-08-05 10:30:37

标签: ios swift

我正在使用带有Runes和Box框架的Argo,我遵循了Carthage添加框架的方式。 这是我的城市模型类

import Argo
import Runes

struct Cities {

let cityName: String
let cityState: String

 }

extension Cities: Decodable {
static func create(cityName: String)(cityState: String!) -> Cities {
    return Cities(cityName: cityName, cityState: cityState)
}

static func decode(j: JSON) -> Decoded<Cities>
{
    return Cities.create <*> j <| "cityName" <*> j <| "cityState"

}
}

我收到以下错误:无法找到&#39;&lt; *&gt;&#39;接受提供的参数 返回Cities.create&lt; *&gt; j&lt; | &#34;的cityName&#34; &LT * GT; j&lt; | &#34; cityState&#34;

我该如何解决这个问题?

示例json:

{"cityName":"Panaji","cityState":"Goa"}

Xcode: v6.4

1 个答案:

答案 0 :(得分:0)

  

在Cities.create之后你必须把&lt; ^&gt;操作

以下是您修改后的代码:

import Argo
import Runes

struct Cities {

let cityName: String
let cityState: String

 }

extension Cities: Decodable {
static func create(cityName: String)(cityState: String!) -> Cities {
    return Cities(cityName: cityName, cityState: cityState)
}

static func decode(j: JSON) -> Decoded<Cities>
{

    return Cities.create <^> j <| "cityName" // modified line
                         <*> j <| "cityState"

}
}

在Argo的最后一个版本中你可以这样做:

    import Argo
    import Curry

    struct Cities {
       let cityName: String
       let cityState: String
    }
    extension Cities: Decodable {
       static func decode(j: JSON) -> Decoded<Cities> {
          return curry(Cities.init) 
              <^> j <| "cityName"
              <*> j <| "cityState"
       }
    }