Это ObjectMapper я использую:Как получить доступ к ссылке, встроенной в словарь JSON, используя AlamoFire/ObjectMapper?
ObjectMapper/AlamoFireObjctMapper
Вот данные JSON я работаю с, я пытаюсь получить доступ к «ссылке» значение:
channels = (
{
social = {
facebook = {
"facebook_id" = 47360808996;
link = "https://www.facebook.com/CBS";
};
twitter = {
link = "https://twitter.com/CBS";
"twitter_id" = 97739866;
}
}
}
)
Я создал пользовательские объекты для представления каждого уровня словаря JSON:
class SocialInfo: Mappable {
var channels: Social?
required init?(map: Map) {
}
func mapping(map: Map) {
channels <- map["channels"]
}
}
class Social: Mappable {
var facebookSocial: Facebook?
var twitterSocial: Twitter?
required init?(map: Map) {
}
func mapping(map: Map) {
facebookSocial <- map["facebook"]
twitterSocial <- map["twitter"]
}
}
class Facebook: Mappable {
var facebookLink: NSURL?
required init?(map: Map) {
}
func mapping(map: Map) {
facebookLink <- (map["link"], URLTransform())
}
}
Initialy Я имел " facebookLink "под классом" Facebook "в качестве строки, но он сохранил нулевой уровень. Затем я попробовал URLTransform изменить его к типу NSURL, но теперь он бросает ошибку:
Type of expression is ambiguous without more context
Вот как я пытаюсь получить данные в формате JSON:
func getSocialInfo (completionHandler: @escaping (SocialInfo?, Error?) ->()){
Alamofire.request("\(baseURL)/\(apiKey)/show/950", method: .get, encoding: JSONEncoding.default).validate()
.responseObject{ (response: DataResponse<SocialInfo>) in
switch response.result {
case .success:
let socialInfo = response.result.value
print("This is the social info: \(socialInfo?.channels?.facebookSocial?.facebookLink)")
completionHandler(socialInfo!, nil)
case .failure(let error):
print("Sorry there was an error: \(error)")
completionHandler(nil,error)
return
}
}
}
Хорошо, я вижу, как это сработает, но по какой-то странной причине он продолжает возвращать нуль. – SwiftyJD
Что возвращает ниль, строка или URL-адрес? –
Когда я печатаю («Это социальная информация: \ (socialInfo? .channels? .facebookSocial? .facebookLink)»), он возвращает nil – SwiftyJD