2016-04-19 3 views
1

Im, читающий JSON, который возвращает массив объектов. Я хочу, чтобы связать ответ JSON на мой объект AFTParty и я с этой ошибкой компиляции:Невозможно преобразовать значение типа '_?' для ввода «[AFTParty]?» в принуждении - Swift

Cannot convert value of type '_?' to type '[AFTParty]?'

AFTParty это класс, который соответствует декодируемому протоколу, и я использую Himotoki, чтобы сделать работу.

Мой JSON:

[ 
{ 
id: 1, 
partyName: "x", 
partyAuthor: [ 
{ 
id: 1, 
username: "mtfons", 
name: "marco", 
lastname: "fonseca", 
phoneNumber: "91859158", 
email: "[email protected]" 
} 
], 
partyDescription: null, 
partyStyle: null, 
partyPermission: "PUBLICA", 
partyLocation: { 
id: 1, 
latitude: "1248174", 
longitude: "1428149" 
}, 
prices: [ ], 
partyDetailToJoin: "x", 
partyDateBegin: null, 
partyDateEnd: null, 
partyImagesPath: [ ], 
partyParticipants: [ 
{ 
id: 1, 
username: "x", 
name: "x", 
lastname: "x", 
phoneNumber: "x", 
email: "[email protected]" 
}, 
{ 
id: 2, 
username: "x", 
name: "ajfk", 
lastname: "jfa", 
phoneNumber: "x", 
email: "[email protected]" 
} 
], 
time: null, 
partyType: null 
} 
] 

код, который дает ошибку:

 let partyDeserializer = AFTPartyDeserializerImplementation(network: network) 
      describe("Response") { 
       it("returns party if the network works correctly.") { 
        var response = [AFTParty]() 
        partyDeserializer.getParty().on(next: { response = $0 }).start() 

       } 
    } 


     public func getParty() -> SignalProducer<AFTParty, AFTNetworkError> { 
      let url = AFTRouter.Parties.URL 
      return network.requestJSON(url, parameters: nil) 
       .attemptMap { json in 
        if let response = (try? decodeValue(json)) as [AFTParty]? { 
         return Result(value: response) 
        } 
        else { 
         return Result(error: .IncorrectDataReturned) 
        } 
      } 
     } 

Спасибо за вашу помощь, и я прошу прощения за мой плохой английский.

+0

Я думаю, что проблема может быть «как». Вероятно, это должно быть «как?». – Sulthan

ответ

0

вы имели в виду

public func getParty() -> SignalProducer<[AFTParty], AFTNetworkError> { 

?

0

Если decodeValue(json) возвращает AnyObject, то вы, вероятно, захотите использовать с помощью as?, а не as.

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

  • Нет связанных вопросов^_^