Несколько GET запросов к серверу

json
swift4
ios

#1

Всем привет.
У меня имеются два запроса в моб приложении: 1. Для авторизации (Отправка GET запроса на сервер) 2. Для главной странице (Так же отправляю GET запрос)
С первым запросом проблем не возникло, данные получаю, а вот со вторым проблематично, дело в том что JSON тело у них почти одинаковые, разница только в двух ключах. XCode начал меня ругать, при создании struct с похожими названиями

На скрине видно что в группе structs имеются два файла mobile.swift и translation.swift


#2

Поменяйте названия, к примеру Result -> WelcomeResult


#3

@RexHunt

Благодарю! Заработало :blush:

Как грамотнее сделать, создать единый struct и внутри него проверять что было вызвано ? Как посоветуете оформить?


#4

Все общие поля можно вынести к примеру в отдельную структуру, а для разных запросов, где имеются свои уникальне поля, создавать новую структуру наследуясь от общей.


#5

Продемонстрируйте :slight_smile:


#6

Окей, подловили, исправляюсь.
Не структуры, а классы.

Пример из проекта

class ServiceResponse: Mappable {
    public var success: Bool!
    public var errorNumber: Int!
    public var description: String!
    
    init() { }
    
    required init?(map: Map) { }
    
    func mapping(map: Map) {
        
        success <- map["success"]
        errorNumber <- map["error_number"]
        description <- map["error_description"]
    }
}

class ServiceResponseType<T: Mappable>: ServiceResponse {
    
    public var data: T!
    
    override func mapping(map: Map) {
        super.mapping(map: map)
        
        if T.self != Void.self {
            self.data <- map["data"]
        }
    }
}

class ServiceResponseIntType: ServiceResponse {
    
    public var data: Int?
    
    override func mapping(map: Map) {
        super.mapping(map: map)
        self.data <- map["data"]
    }
}

#7

Для случая со структурами: нужно будет делать протокол, который будет реализовывать структура.

P.S. уже пару месяцев сижу на андроиде, подзабыл немного.


#8

У меня наоборот, с ведра решил пересесть на swift :sweat_smile:


#9

Я работаю на обеих платформах, но Swift мне нравится больше. Хотя Kotlin очень близок к нему.


#10

В java классы у вас тоже от интерфейсов наследуються?


#11

Вообще-то да и без этого нельзя сделать много вещей. И я понимаю что протокол - это аналог интерфейса.
Другое дело если вы имели в виду под классами - модели. Если честно, я пока не припомню такого в моей практике. Такой способ пришол только сейчас.

Теперь ваша очередь рассказать чем этот способ плох.


#12

Ваш способ не плох, я придираюсь к терминологии :slight_smile:

Протокол - это контракт который говорит какие свойства и методы должны быть реализованы, от него невозможно наследоваться классу, структуре, они его могут только реализовывать.

Так же как и:

Интерфейс на языке программирования Java является абстрактным типом, который используется для указания поведения, которое должны выполнять классы.


#13

Каюсь, в терминологии я слаб. Постараюсь исправиться :slight_smile: