• Вывод денежных средств с App Store и Google Play за бугор?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Используйте Payoneer, выплаты под 1% от суммы. Если получили выплат суммарно больше 10к$, через саппорт комиссия отменяется.
    Выпускают свои карты.
    Ответ написан
    9 комментариев
  • Home indicator меняет цвета?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Цвет индикатора изменить нельзя.
    Есть хитрости как сделать его белым или черным, но это те еще костыли.
    Ответ написан
    2 комментария
  • Как мне поступить с тз которое написал прогер?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Давайте проясним некоторые моменты:
    • Полиции, которая проверяет т3, не существует
    • Нет правильного и неправильного т3
    • Нет обязательных т3
    • Т3 можно писать хоть папирусом


    Т3 нужно для:
    • Договор на берегах. Вы ограничиваете разработчика в языке или библиотеках. Если в проекте всплывает эта библиотека, а разработчик забыл - вам поможет т3.
    • Ответственность за апдейты и развитие. Вы запретили разработчику использовать сплит-контроллеры, но без них версия для iPad смотрится плохо. Вы требуете от разработчика сделать `КАКУЭПЛ`. Но разработчик покажет почему это невозможно пунктом в т3.
    • Ограничение плохого кода. Если т3 пишет человек, опытнее программиста, конечно.


    Т3 косвенно помогает с определением функционала. Но обычно не описательное в духе "эта кнопка нажимается мягко".

    Разработчик хотел от вас технического т3. Я не могу знать, но мой опыт подсказывает что он в курсе что вы не сможете его написать и решил заработать. С технологиями, которые удобны ему. Встречал ситуации когда в т3 был набор слов `Конь, звезда, сметана` (заменить на специальные термины) для иллюзии проделанной работы.
    Абсолютно нормально показать т3 другому разработчику и спросить что он об этом думает. Обман легко можно объяснить даже далекому от программирования человеку. Смотри мой твит про $1200.

    Нет проблемы прикрепить общее описание проекта. Почему это не нравится разработчику - не знаю. Но недоделать т3 и сказать "не волнуйтесь все будет как вам нужно" - говорит что т3 не особо было нужно изначально.

    Я не сказал ничего требующего специальных знаний, только-попса-зачеркнуть. Будьте осторожнее.
    P.S. Пишите, гляну т3.
    Ответ написан
    6 комментариев
  • Как в функции с помощью Switch перевести массив из Int -> String?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Что делает строчка:
    let array = [1...9]

    Не понял про перевод в массив. В примере кода вы просто выводите значения. Если я неправильно понял ваш вопрос - уточните.
    Но неважно, давайте перейдем к костылям.

    Делаем через функцию:
    func switchUp(_ value: Int) -> String? {
            guard value > 0 && value < 10 else { return nil }
            switch value {
            case 1:
                return "Один"
            case 2:
                return "Два"
            default:
                return nil
            }
    }


    Другой вариант костыля:

    enum LocalizedValue: String {
            case 1 = "Один"
            case 2 = "Два"
            case 3 = "Три"
    }
        
    let string = LocalizedValue.1.rawValue


    Если не забывать про локализацию, можно сломать голову (род существительных, число и прочее). Но как я понимаю, вам не для локализации, а для разового эксперимента. Костыли подойдут.

    P.S. Используйте форматирование для кода.
    Ответ написан
    1 комментарий
  • Как решить "AppStore: Missing App Icon..."?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Теперь иконка разрешением 1024x1024 хранится в проекте. Если у вас не появилась она в паке для иконок (обычно внизу), то удалите пак и создайте заново, заполнив все иконки. На скриншоте нужная в самом низу - AppStore iOS 1024pt

    5dca8cffe56ee334100482.png

    Чтобы создать новый пак, нажмите на плюс внизу и выберите следующий пункт:
    5dca8db9a0a84034794716.png

    Раньше выгружалась без ошибки, потому что иконку загружали вручную в AppStoreConnect.
    Ответ написан
    2 комментария
  • Как опубликовать макет из Figma на Dribble?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Экспорт из фигмы в jpg и 800x600, загрузить на дрибл. Как оформить превью решать вам.
    Экспорт выглядит так:
    5dac397d1cf12294005495.png
    Можно в 400x300, но уже маловато.
    Ответ написан
    Комментировать
  • Как лучше обновлять контент в приложении?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Не понятно какую проблему вы пытаетесь решить.
    1. Нагрузка на сервер - вряд-ли статическим JSON вы хоть как то упретесь в половину мощности даже самой дешевой виртуалки на DO.
    2. Оперативка девайса - жрется от http запроса? Один контейнер реалма сожрет больше, а запрос по БД улетит в 100 порядков выше с их lazy запросами.
    3. performFetchWithCompletionHandler не для вашей задачи.

    Чтобы сформулировать проблему, нужно определить:
    • Насколько в актуальном состоянии должна быть информация (минута / месяц)
    • Насколько оперативно она должна доставляться (перед запуском, в основном потоке после запуска, в фоне после запуска, когда угодно),
    • На какие расходы вы готовы пойти (готов купить каплю на DO за 5$)

    Обновлю ответ после вашего комментария.
    Ответ написан
    4 комментария
  • Насколько MacBook 12 (2016) подойдёт для XCode?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Иногда на маке жены архивирую проекты - на зарядке работает терпимо.
    Простые проекты тянет, но будете ждать запуска симулятора.
    Если начинаете свой путь - нормально, для серьезной работы - не вариант.
    Ответ написан
    1 комментарий
  • Png логотип в SVG?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    PNG это растровая графика. SVG больше по векторному (описывает координаты линий, точек).

    Если вы хотите перевести растровую графику в вектор ради качества - то это глупость.
    Если только сменить разрешение картинки - используйте любой редактор: PS, Sketch, Paint думаю тоже умеет)
    Ответ написан
    7 комментариев
  • Как создать несколько UIView через цикл?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Так как вы написали:

    Пытаюсь разобраться в разработке интерфейсов под Ios

    предположу что ваши знания начальные, поэтому мой ответ будет в этом ключе. Если я ошибаюсь и вы хотите решить задачу именно вашим способом - напишите, я расскажу (хоть и буду отговаривать).

    Назовем один товар ячейкой. Если ячейка должна занимать весь экран от края до края по ширине - используйте UITableView (называют таблицей), если ячеек по ширине может быть несколько - используйте UICollectionView (называют коллекцией).

    Переиспользование ячеек реализовано и в таблице и в коллекции. В памяти хранятся не все ячейки, инициализируются по необходимости. Принцип работы для обоих коллекций похож: указать количество элементов и передать вью для каждой позиции. Позицию называют индексом.

    Метод для количества элементов в таблице:
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    Как видите, возвращает целое число.

    Метод для возрата вью, для таблицы вернуть объект UITableViewCell:
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

    Просто UIView вернуть нельзя, она не реализует протокол для переиспользования. Но в UITableViewCell можно положить любые вью, которые вы хотите. Это своего рода контейнер. Перед использованием класса ячейки, нужно зарегистрировать класс.

    На моем канале есть ролик про переиспользование в таблице. На сайте эпл можно почитать про таблицу и коллекцию.

    Это основная концепция. Вам предстоит узнать что такое DataSource, Delegate, размеры, Layout (для коллекции). Не пугайтесь, про это написано много туториалов даже на русском.

    P.S. Автор захотел решить задачу с помощью цикла и кодом, привожу пример:
    Вынесем значение Y за цикл. Можно объявить здесь же параметры высоты и ширины:
    var currentY: CGFloat = 0
    let width: CGFloat = 375
    let height: CGFloat = 100
            
    for i in 0...3 { 
    
    }

    В цикле будем генерировать вью и ее настраивать. Лейаут subviews можно сделать там же:
    for i in 0...3 {
                var view = UIView()
                view.frame = CGRect.init(x: 0, y: currentY, width: width, height: height)
                currentY += view.frame.height + 10
    }

    Я приведу только генерацию вьюхи. Как размещать элементы внутри вы уже знаете. 10 - это отступ между вьюхами.
    Ответ написан
    2 комментария
  • Интернет на iOS не работает после переключения WIFI на другую точку доступа. Решение?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Давай думать. Посмотри в настройках модема службу DHCP, она раздает IP-ники. Проверь IP-ник в настройках телефона, попробуй для двух точек доступа зарезервировать конкретный IP для мобилки.

    Если не помогло, и с другими устройствами точки работать нормально, боюсь предположить что у тебя 5-ый / 6-ой / 7-ой айфон собранный из палок (реф короче). Тогда попробуй поставить бету 13.1, там как раз обновили прошивку модема. Вдруг поможет.

    Проверь какие каналы поддерживает модем и устройство. Для 5 герц актуально. Скорее всего айфон не видел бы сеть, если не поддерживает канал, но мало ли. Возможно перезагрузка переключает канал и после этого инет работает.

    Нужно больше инфо чтобы сказать что-то конкретнее.
    Ответ написан
    Комментировать
  • Как сохранить данные приложения?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Зависит от данных.

    Если есть намеки на модель данных, используйте БД. Я люблю Realm (плюшками будут CloudKit из коробки и много чего другого).

    Если сохраняете флаги (прошел туториал / нет), используйте UserDefaults. Можно настроить синхронизацию между устройствами.
    Устанавливается значение в одну строчку:
    UserDefaults.standard.set(true, forKey: "example_flag")

    Если статические данные, создайте файл JSON.
    Ответ написан
    1 комментарий
  • Можно ли установить язык показываемого ViewController вне зависимости от языка устройства?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Код:

    func getFrenchString(forKey key: String) -> String {
        if let currentLanguage = (NSUserDefaults.standardUserDefaults().arrayForKey(AppleLanguages)?.first as? String) {
            if currentLanguage == "fr" {
                return NSLocalizedString(key, comment: "")
            }
            else {
                //the application is not currently on `fr`
                //change application to `fr`
                NSBundle.setLanguage("fr")
    
                //get the localized string on `fr`
                let frString = NSLocalizedString(key, comment: "")
    
                //return the application to the old language
                NSBundle.setLanguage(currentLanguage)
    
                return frString
            }
        }
    
        return ""
    }


    Как это работает
    Предпочитаемый язык хранится в NSUserDefaults, чтобы получить значение по ключу для конкретной локализации, временно меняем язык на Французский (вы можете поменять на любой другой), получаем значение и возвращаем оригинальный язык.

    Уверен, сможете сделать метод универсальным: к примеру, чтобы получал идентификатор локали как параметр в методе.
    Ответ написан
    Комментировать
  • Каким образом реализовать хранение данных в мобильном приложении ios с вопросами и ответами на них?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Конечно JSON, даже не сомневайся.
    Архитектура правильная, чуть шлифануть:

    {
       "id": "1", //  всё отлично
       "title": "Какой формы земля?", // можно question
       "type": "buttons", // Если это стиль отображения, тогда сделай массив. Если тип вопроса - всё ок
       "answers" {
          "correct": "Плоская"
          "incorrect": ["Круглая", "Квадратная", "Ромбовидная"]
       }
    }


    Для ответов обновил иерархию, неправильные ответы в массив. Правильные ответы хорошо бы тоже в массив.

    UPD2:
    А где правильнее хранить json файл?

    Если вопросы добавлять редко, то локально. Ради потенциальной возможности исправить ошибку мучать http не стоит)
    Ответ написан
    3 комментария
  • Кто-нибудь кто сейчас работает с SwiftUI, как у вас с мощностями в плане работы в realtime?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    У меня FPS выше, чем на симуляторе. Местами лагает.
    Прошка 18ого на i5
    Ответ написан
    Комментировать
  • Как сделать бэкап Realm БД в файл на Swift?

    ivanvorobei
    @ivanvorobei Автор вопроса
    iOS разработчик, канал https://t.me/sparrowcode
    Если URL для Realm выглядит так:

    FileManager.default
                .containerURL(forSecurityApplicationGroupIdentifier: self.identificator)!
                .appendingPathComponent("default.realm")


    То получить объект Data не сложно:

    let backup = try Data(contentsOf: realmURL)

    Дальше Data можно записать куда-то, добавить ему расширение, выгрузить... тут по вкусу.

    Чтобы заменить базу данных Ream бэкапом, используйте:

    try backup.write(to: realmURL)

    Можно сохранить бэкап в файл, добавить расширение и предлагать пользователю сохранить файл (в iCloud Drive к примеру). Чтобы восстановиться из бэкапа, нужно открыть сохраненный файл.
    Ответ написан
    Комментировать
  • Apple developer Enterprise Program. Регистрация в программе?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    После февраля документы остались те же, основная проблема в DUNS номере для фирмы. Это было и до февраля, и после. Про звонок-подтверждение - аналогично, было и раньше.

    Скорее всего имеете ввиду что срок рассмотрения стал неприличным, а иногда заявки остаются вообще без решения. Это имеет место быть, быстро - не получится.

    Проблема решаемая, намёк.
    Ответ написан
    Комментировать
  • Как называется белое наложение на фото и как его искать в поисковике?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Сделайте треугольник, добавьте градиент из белого цвета в белый с прозрачностью 35%. Скопируйте треугольник ещё раз и сместите вправо.

    Различные варианты можно получить комбинируя фигуры, положение, прозрачности и даже цвета.
    Ответ написан
    Комментировать
  • Можно ли написать плагин для Finder?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Расширения можно написать, но они работают как внешние приложения. К примеру - открыть терминал для текущей папки. Кастомизировать внешний вид Finder не получится.
    Ответ написан
    1 комментарий