Задать вопрос
Контакты

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (35)

Лучшие ответы пользователя

Все ответы (70)
  • Как на 100$ получить максимально много установок?

    maximglobak
    @maximglobak
    iOS developer
    Нет смысла покупать установки на 100$
    Данной суммы будет мало чтоб был результат, установки покупают для того чтоб приложение попало в топ в AppStore и там уже летели органические установки.
    Есть смысл (возможно самому) провести Apple Store Page Optimization, дальше сделать рекламу для My Target (ВК, одноклассники, мой мир и тп) и запустить там хороший таргет. так вы больше получите реальных пользователей.
    FB и другие иностранные сервисы будут слишком дорого вам обходиться (цена за установку)
    Ответ написан
    1 комментарий
  • Переходы из строк в UITableView к другим данным в рамках одного VC?

    maximglobak
    @maximglobak
    iOS developer
    Есть правило - разделяй и властвуй =) (S в SOLID)
    Придерживаясь этому правилу проект будет чище чем у тех, кто не придерживается.
    На первое время всегда кажется, что отдельный VC не нужен для этого, но зачастую логика позже начинает усложнятся и отличаться от того, что было на первом экране. Поэтому я советую разделить на два экрана и у тебя будут развязаны руки на дальнейшие изменения, да и код в одном VC будет чище.
    А экономия памяти, в таком случае, будет минимальным.
    Ответ написан
    Комментировать
  • Как прочитать данные из файла?

    maximglobak
    @maximglobak
    iOS developer
    Можно пойти двумя путями, использовать файлы, удобнее всего json или .plist или использовать целые БД, такие как SQL или Realm например.
    Для первого сюжета файлы обычно полностью загружаются в оперативную память (полностью считываются) и ковертируются в стандартную структуру типа словаря или массива. В таком случае ты сам методами языка достаешь случайное значение.
    Как читать файлы можно найти здесь stackoverflow.com
    Но со вторым вариантом, на мой взгляд, удобнее работать, но сложнее интегрировать, там ты уже запихиваешь все данные в базу, а в приложении подключаешься к базе и средствами базы достаешь случайные значения. Если у тебя большие данные, то лучше использовать второй вариант, но для простоты лучше использовать первый вариант.
    Ответ написан
    Комментировать
  • Где можно найти задачки и решения по Swift?

    maximglobak
    @maximglobak
    iOS developer
    Есть много курсов по программированию (GeekBrains, hexlet и тп), там можно найти уроки и бесплатные вебинары, хорошо помогает при старте.
    Для практики можно придумывать самим себе задачи, посмотреть что требуется для Джуниора, например работа с Core Data, тогда нужно сделать todo list, работа с HTTP протоколом, сделайте мини приложения с интеграцией твиттера, у них в описании все есть. Ну и так далее.
    Мне в свою очередь очень помогла группа в вк (не реклама)(vk.com/iosdevcourse), там много русскоязычных уроков по свифт и objc с ДЗ.
    Дерзайте!
    Ответ написан
    Комментировать
  • Односвязный список swift, почему ошибка?

    maximglobak
    @maximglobak
    iOS developer
    1) .next не всегда обязан быть
    например для элемента (iData: 22, dData: 2.99) у тебя нет .next, но в классе говорится, что он всегда есть.
    Отсюда следует, что .next - опциональный тип
    2) Тоже самое с .first в списке, он может быть или не быть. Вдруг ты все удалил и тогда будет краш.
    3) Ошибка как раз и возникала из-за того, что пыталась взять .next, которого нет
    Ниже исправил код с комментариями.
    class Link {
      private let iData: Int
      private let dData: Double
      public var next: Link?
    
      public init(iData: Int, dData: Double) {
        self.iData = iData
        self.dData = dData
      }
    
      public func displayLink() {
        print("{\(iData), \(dData)}")
      }
    }
    
    class LinkList {
    
      private var first: Link?
    
      public func isEmpty() -> Bool {
        return first == nil
      }
    
      // INSERT
      public func insertFirst(iData: Int, dData: Double) {
        let newLink = Link(iData: iData, dData: dData)
        newLink.next = first
        first = newLink
      }
    
      // DELETE
      public func deleteFirst() -> Link? {
        // Проверяем есть ли первый элемент, иначе удалить ничего нельзя и мы возращаем nil
        guard let first = first else { return nil }
        // Если есть первый элемент, то ему присваиваем значение второго
        // Если второго нет, то ему присвоится значение nil
        // А это значит мы удалили все элементы в списке
        self.first = first.next
        return self.first
      }
    
      //Display
      public func displayList() {
        print("List (first --> last)")
        // Создаем стартовый элемент, который изначально равен первому
        // Это опциональный тип и может быть nil, так как первый элемент тоже может быть nil
        // Если вдруг мы все удалили
        var element = first
        // Потом сразу делаем проверку на nil
        // Если элемента нет, то и выводить ничего не будем
        while element != nil {
          element?.displayLink()
          element = element?.next
        }
        print("----------")
      }
    
    }
    
    
    let theList = LinkList()
    theList.insertFirst(iData: 22, dData: 2.99)
    theList.insertFirst(iData: 55, dData: 5.99)
    theList.insertFirst(iData: 77, dData: 7.99)
    
    //theList.deleteFirst()
    //theList.deleteFirst()
    //theList.deleteFirst()
    
    theList.displayList()
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (11)