Вы видите копию треда, сохраненную 26 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Полезные ресурсы:
https://www.raywenderlich.com/
https://www.appcoda.com/
https://www.bignerdranch.com/books/ios-programming/
Видео для ленивых:
https://www.udacity.com/courses/ios
https://www.youtube.com/user/AlexSkutarenko
https://developer.apple.com/videos/
[YouTube] Developing iOS 11 Apps with Swift - 1. Introduction to iOS 11, Xcode 9 and Swift 4[РАСКРЫТЬ]
Телега с фрилансерами 300к в секунду: https://telegram.me/joinchat/CUVruD5OrDIaNn5XKwM6Dw
С нуля на русском
С нуля базы рассказывает, дает сложную домашку, но все разжевывает
https://coursehunters.net/course/osnovy-swift-c-nulya
https://coursehunters.net/course/razrabotka-ios-prilozheniya-c-nulya-swift-4-xcode-9-ios-11
Себе отложил это еще
[YouTube] Swift 3 c нуля: UIKit урок 1 - Intro[РАСКРЫТЬ]
Тут чисто осмотр UIKit, но рассказывает бегло, не углубляясь.
Перевод документации базовой
https://swiftbook.ru/content/
Материал на английском:
Очень подробно все рассказывает и расписывает, сейчас ее смотрю, правда я изучил немного, поэтому пролистываю много. Но домашку дает вроде как. Есть сабы, что удобно.
https://rutracker.org/forum/viewtopic.php?t=5445071
Devslopes. Начинал с них, рисуют приложения при тебе, особо не углубляются в детали, но как пример можно посмотреть. Сам к ним вернусь, как побольше поучу.
У самого возникла проблема, тут описал >>1229284
поэтому дропнул пока их.
https://coursehunters.net/course/udemy-ios11-swift4
Еще материал из ОП поста, который много где форсят
https://www.youtube.com/playlist?list=PL9lXw_XXeiWQGrY5dl0IjFI7tOw_nfI91
Без сабов тяжело, сабы хорошие на айпад подкастах нашел, там же и материалы.
Вообще видно что дают хороший годный материал, но чаще сложно приподносят, из-за чего сложно воспринимать если не имел дело вообще с программированием.
Появился вопрос, видимо до него я еще так и не дошел: а как можно сохранять процесс?
Допустим есть у меня экземпляр класса игрока, который создается в процессе, но при перезапуске приложения все слетает к дефалту. Каким образом вообще в дальнейшем можно сохранять пользовательские настройки?
Проси 300к в секунду и карамельного петушка на палочке. Ведь твоё приложение уникально, альтернатив нет.
Эджлорд, плиз.
>есть только ctrl +i
Это такое убожество. Если я буду писать что-то вроде [1,2,3,4] а не [1, 2, 3, 4] то он не сможет это форматировать.
Если я напишу sosiXui{ - то он не отформатирует скобочку и не сдвинет еще чтобы там был пробел.
Это единственный минус что я нашел здесь пока что. Просто пиздец как раздражает сильно.
Можно. Копайся в Quartz
Вкратце всё что тебе нужно это получить C API, которое ведёт к управлению хардвером, иными словами C-шная среда, которая в Эпле именуется контекстом. Чтобы управлять дисплеем нужно получить шаред инстанс CGContext'та из одного из методов NSView. Так вот такая трахомудрия, но это самый прямой путь к дисплею.
>SwiftLint попробуй, базарю еще захочешь
Выглядит как некий контроль над кодом, а не форматирование. Попробую что-то вроде этого https://github.com/Jintin/Swimat Жалко что только на свифт, но для начала хватит. Прям очень огорчает, в идеа сильно привык к этому.
>У свифтлинта есть комманда autocorrect.
Есть не спорю. Но свимана мне достаточно. То что нужно было.
Сейчас помогает решение только перезапускание хкоде.
Это кривожопые овуляхи упороли плейграунд своей неведомой херотой. Кто-то говорит, что он лезет синхронизироваться с iCloud но это фиксится через 3 жопы. Качай бетку 10. Там всё норм.
в десятом хкоде все ок с этим
UIColor.white.setFill()
path.fill()
Объясните долбаебу как это работает. white - это статик константа цвета, как вызов метода у цвета может задать цвет для path который я рисую?
Не ебу как на саомо деле, но скорее всего setFill берет текущий грфический контекст и можифирует его, такая хуйня.
не проще в доке посмотреть?
Your custom implementation should modify the fill color in the current graphics context by setting it to the color represented by the receiver.
Шанс для меня практически единственный вырваться из нашей срани, так как все другие компании, которым я отправлял CV, меня слали и шлют лесом.
Если ты норм iOS дев, то многие обжси темочки уже знаешь. А так бери эппловскую доку и хуячь, за месяц вполне управишься.
Есть класс как пикрил.
Далее есть массив из этого класса.
Выглядит как
var stashOne = [Stash(item: "1111", desc: "222")]
Такую систему подсмотрел в одном из уроков, сейчас пытаюсь разобраться что к чему вообще, потому что пояснений особо нету.
Сейчас конкретно интересует вопрос - как мне проверить данный массив на наличие определенной строки? Или Наличие определенного элемента.
Как я могу это сделать?
Да это-то ясно, просто выглядит, как говно.
Почитай ОП пост, там дохера уроков.
Начни с ним сначала.
Сможешь основы понять и усвоить - можно двигаться дальше.
Спасибо, анон!
>>45067
Видимо что то не так делаю.
Тестировал это в плейграунде, даже сравнивая со строкой, все нормально работает и считаетю
На практике же выводит всегда 0 при вызове.
Я думаю что это связано с тем, что когда переменная объявлена, внутри массива нету такого объекта с подходящим именем.
Но когда я объект добавляю и еще раз вызываю переменную, она видит только старые параметры.
Сейчас проверил, действительно выводит "1"
Если принудительно вставил этот элемент в то множество.
Но при повторном добавлении такого же объекта, продолжает выводить "1"
Молодец.
Я все-таки решил не торопиться, и пока накатываю свифт + этого сумасшедшего старика из гарварда.
Все равно пока другая работа кормит.
хз, я взял вот эту хуйню https://github.com/BohdanOrlov/ios-skills-matrix
и вот эту хуйню https://github.com/BohdanOrlov/iOS-Developer-Roadmap
ну и по ним дрочусь уже сам себе ставя галочки
>Multithreading:asyncAfter is a friend, @synchronize all the things
До этого не дошел еще, о чем тут идет речь?
я сам не дошел еще, пользовался только в одном месте этим методом, решил заняться мультипоточностью именно во время уже предбеты
своего приложения
Если он там че-то новое наснимал я хз, но раньше у него были довольно старые ролики, да и объясняет для совсем маленьких, мне, как знавшему уже до этого немного вайти было очень тягомотно слушать.
После дедухана со стенфорта однозначно не стоит слушать.
Он вроде хорошо объясняет, но я когда начал по нему учиться, заметил что он приводит в пример много неактуальной информации, в частности синтаксис неактуальный.
Занимаясь по этим курсам
https://coursehunters.net/course/osnovy-swift-c-nulya
Там человек тоже дает неплохую матчасть и обычно разжевывает все, и по актуальному синтаксису и также дает ссылки где что читать.
Ооп я уже вкурил, пока неясно что за хуета это protocol based programming
KeyboardView насколько я понимаю это вьюха которая будет рисоваться сервисом кастомной клаиватуры?
Как по мне в iOS намного лучше вот это вот все с клавой.
Для каких целей оно тебе нужно? В iOS ты можешь любую вьюху задать как inputView для текстфилда или текствьюхи, и она сразу получит нормальный размер клавиатуры и будет прятаться когда бы пряталась клаиватура.
В ведроиде я в xml задаю кнопки, размер отступы, и Keyboard View рисует мне кастомную клавиатуру (без системного сервиса). В ios я так понимаю если хочешь кастомные кнопки , нужно все самому рисовать?
otvet
Ты используешь KeyboardView как вьюху, а не как реальную клавиатуру?
В iOS нужно будет делать кастомную вьюху. Но если тебе например просто нужен нижний барабан с несколькими столбцами то это UIPickerView и тд.
использую как клавиатуру, которой удобнее управлять, которой могу задать высоту, задать размер кнопок и какие кнопки вообще нужны.
UIPickerView -это не то, нужно походу будет создать как-то кастомную вью и программно кнопки на ней размещать
Чот у вас андроед головного мозга. Что ты в итоге хочешь получить, какую проблему юзера решаешь?
Ой бля, хоть ведройд и костыль, но такую хуйню за 5 секунд можно сделать.
Иос говноподелка не справится с этим.
Хотя мне второй больше импонирует, потому что говна меньше все же. И это единичные случаи, так что тебе придется сосать хуй.
А как кнопки нарисовать не подскажешь? Нужно какой кастомный контейнер вью переопределить и в нем добавлять по координатам? Можно так?
Можешь просто унаследоваться от UIView, а дальше каждой кнопке координаты (frame) ебашить в layoutSubviews.
Кто нибудь видал что-нибудь похожее на admob, только с апишкой для вывода денег ?
Опять ты, что ты понимаешь под апи для вывода денег? Я не понимаю каким боком этот вопрос к моб разработке.
Это серьезно? У меня есть парочка таких завалялась интересных моментов. C такими успехами можно писать книгу об этих фичах. Swift and his features.
>ы открыл для себя стандарт числе с плавающей точкой?
Нет. Мне просто уже не нравится политика гейаппле, которая удаляет ++ и плюет на всех с обратной совместимостью.
Алсо, а на обжектив она есть?
Хотя, если придерживаться смысла "новое в хату" то можно и закрывать на эти высеры.
В чем твоя претензия?
Нужно переводчик запилить на основе API яндекса, но я еще с этим ни разу не работал
Никуда, я свою прилу делаю, но еще не сталкивался с работой с сетью. И не знаю, как делать базу и тд.
Разве что RESTapi в теории знаю, но на практике не применял(
>RESTapi в теории знаю, но на практике не применял(
Теорию? Ну конечно. Рест это тебе не гет пост запросы, маня.
Чем? Если не знаешь как работать с сетью, то иди networking от юдасити смотреть.
Где опубликовать, в сторе? Ну если там совсем тупые долбоебы, то конечно они будут требовать что бы ты им все настроил и залил в стор с их аккаунта, продвинутые сами все зальют что бы без сюрпризов и как им надо, ну и платить за заливку не придется.
Потому что Эпл очень любит юзер интерфейсы. Кода ты пишешь программу ты пишешь одновременно АПИ или интерфейс для того кто твой кусок будет пользовать в дальнейшим, с помощью этих черточек ты сможешь настраивать читабельное АПи для своего лампового или не очень кода
Можно ключевое слово для гугления? Ладно, по твоему ответу я немножко понял, а как "апи" хуйнуть я не понял.
Я же блять просто в крайностях могу //MARK сделать.
Наслаждайся. Это правильный ентри поинт
бамп
На данный момент заканчиваю курс скутаренко и параллельно посматривал The Swift, вроде большенство понял усвоил, но вот с ARC туговато именно где клоужеры и захваты значение, но думаю далее через повторения все это будет добито и понято. Тк вот анон, что ты посоветуешь после какого-никакого но усвоения синтаксиса языка, что начать смотреть, думаю начать изучение UI на том же The Swift, еще хотел бы пройти Гарвардский курс, но все осложняется тем, что знание английского ниже среднего(сейчас активно изучаю и английский). Тк вот аноны может есть этот курс в русской озвучке? И вообще интересует вопрос, после изучения синтаксиса дело идет полегче или наоборот нужно запасаться терпением и еще больше мотивировать себя?
>после изучения синтаксиса дело идет полегче или наоборот нужно запасаться терпением и еще больше мотивировать себя?
Хватит искать какие-то лазейки, чтобы обмануть систему. Все работает так, как ты знаешь - либо ты ебашишь, либо сосешь. Все.
Я в свое время переводил каждое слово, активно сидел в треде английском и хуярил анко. Все. Никакой магии блять. Тупо забудь русский.
>Swift, еще хотел бы пройти Гарвардский курс, но все осложняется тем, что знание английского ниже среднего
Вообще я в прошлом треде писал что можно подкаст скачать на iTunes.
Там есть хорошие сабы, поскольку на ютубе с ними какие то проблемы.
Посмотрел половину, и там начались уроки по CoreML.
Часто ли спрашивают знание по нему и по Augmented Reality?
Знание каких фреймворков часто спрашивают при устройстве?
В курсах немного затронули Realm, Alomofire, SwiftyJSON, Firebase, CoreData, но очень и очень поверхностно, хотя я вижу что тема гораздо глубже, и явно стоит ее изучить получше.
В вакансиях часто упоминают rest API.
Что вообще еще лучше подтянуть чтобы влиться в стак будучи джуном?
я бы рад, но для начала нужно выучить английский, чем сейчас занимаюсь.
Хм, хорошо, почитаю.
лол это не замыкание, страндартная loop конструкция
Разное поведение в симе и на девайсе, какие-то дедовские begin() commit() вместо кложуров, в делегат по didStop прилетает совсем другой объект вместо исходной анимации, последовательные анимации на разные проперти разных слоев чтобы сделать - надо вообще ебануться, конвертни еще время слоя в другой слой да выпей чаю.
мимо-неосилятор-пишу-год-на-свисте
Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.
Суть в чем:
Есть переменная, как только она становится равной 0
То всплывает AlertAction с вводом нового имени объекта.
Как только пользователь вводит имя
Сначала realm удаляет старый объект (командой realm.delete(object)), но на его месте создает новый.
Вот как доходит до удаления - объект удаляется и выкидывает такую ошибку.
Что могу делать не так?
Реилм - это же живые объекты. Почему нельзя просто изменять его? Хотя хуй знает, пока с реилмом не работал в иосе.
>Что могу делать не так?
Читать реилм доки.
В общем оказалось что после удаления надо было создать новый объект, при этом без realm.write.
Объектов не было, а в блоке кода где был краш производилась запись в объект
В айоси можно сделать анимацию джина как на мак оси при сворачивании или только аффинная поебота как на ведре?
CoreData
Думал что с использованием realm как годной БД решу свою больную идею, однако сейчас все также не могу разобраться как выгружать объекты.
Попытался изобразить на схеме чего пытаюсь добиться, немного разъясню:
Верхний блок - класс пользователя, который создается автоматически.
При открытии правого tableView (назову его Банк), выводится список опций, который заранее забиты туда, изменений в него не производится.
При выборе какой либо ячейки, часть свойств передается новому объекту (на схеме назвал его someTarget()), и первый (левый) tableView закрывается.
Далее создается массив someTarget(), который загружается уже во второй tableView(который слева).
При открытии второго tableView выводится весь массив someTarget().
Уже во втором tableView при выборе любой ячейки, выбранный объект удаляется из массива объектов [someTarget()] и информация передается классу пользователя. Либо какие то свойства у пользователя изменяются (это в идеале), либо я хотя бы мог полученные свойства от умершего someTarget() получить.
Сначала работал без БД, поскольку не было нужды сохранять процесс. В итоге путем создания отдельного класса как массива someTarget, у меня получалось передавать данные от первого tableView ко второму, а потом от туда удалять выбранные ячейки как объекты из массива.
Единственное, как получать данные я так и не понял и не разобрался.
Решил воспользоваться БД, в надежде на то, что теперь то будет проще.
В итоге поставил realm.
Сейчас пытаюсь создать в пользовательском классе коллекцию someTarget(). Сам класс и его свойства прописал в отдельном классе, пользовательский класс должен принимать массив этих объектов (someTarget()). Делаю это чтобы не засорять realm разными свойсвами, и чтобы в дальнейшем было проще фильтровать данные.
Видимо отсутствие понимания того как выгружать из realm часть объектов или добавлять именно объекты в массив меня сейчас тормозят.
Конкретно сейчас не понимаю как записать полученные свойства из объекта Target() в пользовательский класс, в коллекцию someTarget как новый объект.
Т.Е. сам объект я создаю внутри didSelect у первого tableView, но не понимаю как правильно написать функцию у realm.
Там что-то
try realm {
realm.write{
user.targetArray.append(someTarget())}}
На это он ругается, поскольку у в пользовательском классе неправильно выбран типа у targetArray (сейчас там List<someTarget>)
Может кто нибудь подсказать как вообще лучше реализовать мою цель?
Ну и да, учу свифт два месяца, вроде получается, а вроде и есть затупки
Думал что с использованием realm как годной БД решу свою больную идею, однако сейчас все также не могу разобраться как выгружать объекты.
Попытался изобразить на схеме чего пытаюсь добиться, немного разъясню:
Верхний блок - класс пользователя, который создается автоматически.
При открытии правого tableView (назову его Банк), выводится список опций, который заранее забиты туда, изменений в него не производится.
При выборе какой либо ячейки, часть свойств передается новому объекту (на схеме назвал его someTarget()), и первый (левый) tableView закрывается.
Далее создается массив someTarget(), который загружается уже во второй tableView(который слева).
При открытии второго tableView выводится весь массив someTarget().
Уже во втором tableView при выборе любой ячейки, выбранный объект удаляется из массива объектов [someTarget()] и информация передается классу пользователя. Либо какие то свойства у пользователя изменяются (это в идеале), либо я хотя бы мог полученные свойства от умершего someTarget() получить.
Сначала работал без БД, поскольку не было нужды сохранять процесс. В итоге путем создания отдельного класса как массива someTarget, у меня получалось передавать данные от первого tableView ко второму, а потом от туда удалять выбранные ячейки как объекты из массива.
Единственное, как получать данные я так и не понял и не разобрался.
Решил воспользоваться БД, в надежде на то, что теперь то будет проще.
В итоге поставил realm.
Сейчас пытаюсь создать в пользовательском классе коллекцию someTarget(). Сам класс и его свойства прописал в отдельном классе, пользовательский класс должен принимать массив этих объектов (someTarget()). Делаю это чтобы не засорять realm разными свойсвами, и чтобы в дальнейшем было проще фильтровать данные.
Видимо отсутствие понимания того как выгружать из realm часть объектов или добавлять именно объекты в массив меня сейчас тормозят.
Конкретно сейчас не понимаю как записать полученные свойства из объекта Target() в пользовательский класс, в коллекцию someTarget как новый объект.
Т.Е. сам объект я создаю внутри didSelect у первого tableView, но не понимаю как правильно написать функцию у realm.
Там что-то
try realm {
realm.write{
user.targetArray.append(someTarget())}}
На это он ругается, поскольку у в пользовательском классе неправильно выбран типа у targetArray (сейчас там List<someTarget>)
Может кто нибудь подсказать как вообще лучше реализовать мою цель?
Ну и да, учу свифт два месяца, вроде получается, а вроде и есть затупки
читай доки и свифт
Кстати, телега из оп-шапки недоступна.
Да никак, это системная фича не доступна разработчикам. Но можешь попытаться скопировать.
>обязательно ли ставить макось, чтобы билдить приложение на Cordova?
Под iOS -- да, без вариантов.
>в виртуалку проще
Зависит от заёбистости твоего приложения. Если тебе просто собрать и залить в аппстор то можно и виртуалку, если ты собрался дебажиться с нативными модулями, то виртуалка может и заебать, если у тебя не i9 с 64 гигами оперативки и nvme.
Чому не хочешь засабклассить текствью например?
Но если охота поебаться - бери TextKit и ебош.
что значит ловит фокус?
UIKeyInput, или что-то такое заюзал
Если хочешь поменять значение в словаре – тебе нужно менять его именно в словаре, а не просто переменную которой присваивается это значение.
Прикрепил code exampl'ы, сори что на питоне, но суть одна и та же.
Надеюсь, что правильно передал идею.
Ты читать умеешь? Написано же что нельзя туда Int пихать, нужно [String: Int]:
kekq["xex"] = ["mda": 1488]
Нахуй ты лезешь в прогерство если даже не можешь загуглить ошибку на so? Думаешь тебе постоянно будут жопу подтирать и разжевывать? А вот хуй. На со уже по тысяче раз переобоссали такие нубовопросы и пересказали книжки для ньюфагов тысячью разными способами, просто возьми да открой. Быстрее чем ввести капчу, лол.
>Написано же что нельзя туда Int пихать, нужно [String: Int]:
Ты дурачок?) Я первый пик не просто так прикрепил.
>>52762
Вместо того, чтобы написать 2-3 слова, ты начинаешь бесполезно кукарекать, показывая себя невьебенным чуваком, лишь повышаешь свое убогое чсв.
Пока считаем, что словарь значений в словаре никак нельзя изменить.
>Пока считаем, что словарь значений в словаре никак нельзя изменить.
так а где на пике ты пытаешься это сделать??
>Пока считаем, что словарь значений в словаре никак нельзя изменить.
Пока считаем что ты ленивый уебан, превращающих тред в свой недобложик.
Для начала скажи мне, ты хотя бы почитал ебаную swift book прежде чем кукарекать что
>Пока считаем, что словарь значений в словаре никак нельзя изменить?
Можешь не отвечать т.к. там есть глава
https://docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html
Прочитав которую ты бы понял как менять словарь внутри словаря
>A value type is a type whose value is copied when it’s assigned to a variable or constant, or when it’s passed to a function.
>In fact, all of the basic types in Swift—integers, floating-point numbers, Booleans, strings, arrays and dictionaries—are value types, and are implemented as structures behind the scenes.
И мог бы задать свой вопрос гуглу, где тебе первой ссылкой бы выдало
https://stackoverflow.com/questions/42529888/cant-update-a-value-in-a-dictionary-inside-an-array
Где хоть не dict inside dict, но ответ в первом предложении.
Или яву ты тоже изучал методом тыка и ебал в тредах всем мозги почему твои обобщенные типы затирает, или почему ты присвоил объект переменной, поменял что-то внутри и во всех старых переменных все поменялось?
Малаца, братишка, у тебя всё правильно получилось. Только если ты никак не используешь переменную text в функции change, можно её выпилить и не передавать asf, т.к. ты все равно захардкодил ["f": 40].
Ну и не обращай внимания на злых анонов, всегда смело задавай вопросы.
Судя по этим кусочкам, ты просто эталонный быдлокодер, неряшливый и с кашей в голове.
>Нахуй ты столько текста городил?
Чтобы ты понял а ты так нихуя и не понял
Для того чтобы менять значения как ты хотел есть inout
https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID545
Да ты же червячок, а никакая не цыпа, судя по интеллекту)
https://forums.swift.org/t/kickstarting-new-official-docker-support-for-swift/15487
Ребята, зачем вы друг друга обсираете? Давайте покажем всему програмачу пример, как можно культурно общаться в програмерской среде? Ведь хочется заходить сюда и делиться умными мыслями и получать умные советы, а не самоутверждаться? Давайте оставим этот путь другим языкам а сами же изберём культурную форму общения, уважения и помощи?
Докер контейнер для свифта и раньше был, только там не вся foundation была реализована
Ну дак эээ ээ ээ ээ э э пажжи. Фоундейшн можно упаковать в докер и привезти на сервак на Линупсе. А отседова сдедует щитооооо можно пилить микросеврисы, используя разного рода фоундейшеновы и свифтовые плюшки. А офисал суппорт есть оффисал суппорт. Можно откинуться на спилку стула и ебать питонистов хуярить
> А офисал суппорт есть оффисал суппорт.
Ну как сказать, официал супорт по стуи есть только на макось и айось, на веб там нихуя нет, экосистемы, фреймворков, либ нет, тулзы тоже заточены на апле, разве что пекедж мэнеджер сделали, но в 2018 из мейнстрима этого разве что у явы и крестов по дефолту нет.
Не вижу ни единого шанса того, что язык хоть как то выйдет за пределы разработки под эпл.
В конце концов есть котлин, если захочется свифтовой мякотки.
Питоночень все равно продолжит давать на клыка свифтобогам.
> там нихуя нет
Ну эээ дружище. Дак свифт 5 идёт с ABI, которое позволит поставлять язык подефалту в винде и линупсе.
> там нихуя нет
Vapor, Swift NIO, SPM(как ты правильно заметил), да тот же Foundation где уже есть вообщемто всё. Куча мелколиб на гитхабе которые с помощью SPM встраиваются в любую поебень под линупс. Я немпротив того чтобы все считали что свифт ничего не умеет, но факты есть факты. Яблочный поезд едет впирёд.
Видимо в уроках неактуальная информация, вопрос к знающим анонам:
При регистрации пользователя, загружаем пик, который привязывается к созданому аккаунту.
Вот кусок кода
Storage.storage().reference().child("profile_images").child(filename).putData(uploadData, metadata: nil, completion: { (metadata, error) in
if let error = error {
print("Failed to upload profile image:", error)
return
}
Далее по уроку чтобы привязать к константе URL используется такой метод
guard let profileImageUrl = metadata?.downloadURL()?.absoluteString else { return }
Но по докам гугла у них сейчас нету такого, и вместо этого рекомендуют использовать такой метод:
// You can also access to download URL after upload.
riversRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// Uh-oh, an error occurred!
return
}
}
Проблемы начинаются когда я пытаюсь эту ссылку использовать при записи в базу, ведь такой метод возвращает void.
Я пытался в хендлере записать на свободную переменную этот url, и картинку все же функция загружает, но не создает пользователя и не записывает url
guard let profileImageURL = metaData?.storageReference?.downloadURL(completion: { (url, error) in
if let downloadURL = url{
self.downloadString = downloadURL.absoluteString
} else
{return}
Может помочь кто нибудь?
Видимо в уроках неактуальная информация, вопрос к знающим анонам:
При регистрации пользователя, загружаем пик, который привязывается к созданому аккаунту.
Вот кусок кода
Storage.storage().reference().child("profile_images").child(filename).putData(uploadData, metadata: nil, completion: { (metadata, error) in
if let error = error {
print("Failed to upload profile image:", error)
return
}
Далее по уроку чтобы привязать к константе URL используется такой метод
guard let profileImageUrl = metadata?.downloadURL()?.absoluteString else { return }
Но по докам гугла у них сейчас нету такого, и вместо этого рекомендуют использовать такой метод:
// You can also access to download URL after upload.
riversRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// Uh-oh, an error occurred!
return
}
}
Проблемы начинаются когда я пытаюсь эту ссылку использовать при записи в базу, ведь такой метод возвращает void.
Я пытался в хендлере записать на свободную переменную этот url, и картинку все же функция загружает, но не создает пользователя и не записывает url
guard let profileImageURL = metaData?.storageReference?.downloadURL(completion: { (url, error) in
if let downloadURL = url{
self.downloadString = downloadURL.absoluteString
} else
{return}
Может помочь кто нибудь?
Как знаток питона и свифта могу сказать что с питона стянута концепция модулей, оба языка объединяет доступ к свойствам объекта через точку и на этом вообщем то все
40-45 р в зависимости от региона. Это ценник для дс. Берешь на авито подержанный аймак и айпад
берешь и покупаешь макпро. Если нет денег - это не оправдание.
Мне пришлось выучить другой язык, вкатиться через 6 месяцев в какую-то компанию, проработать еще 6 месяцев ради того, чтобы купить этот ебаный макбук. Сейчас я зарабатываю на жизнь другим языком, где после работы я естественно задрачиваю яблоко.
Ебать, когда сидишь и тупо вкатываешься - год действительно быстро проходит.
Вкотился на хакинтоше, заплатив только за вайфай свисток и флешку, и то для удобства.
da
Нет.
da.
Проверь действительно ли ты сохраняешь и потом правильно считываешь. Только что попробовал, все работает.
Нафуй ему песочница? Пусть учиться работать с UserDefaults. Тем более что есть NSCoding
UserDefaults.standard.synchronize()
В свифте в массиве могут храниться и указатели (по 8 байт), и структуры, которые могут иметь произвольный размер. Если хранить все подряд вперемешку в одном и том же буфере, то мы не сможем вычислить смещение для n-го элемента. Как решается эта проблема в свифте? Там такой же буфер, но там хранятся указатели на структуры, а сами структуры скопированы в отдельное место? Там отдельный массив смещений для каждого элемента? Копался в исходниках свифта, но чот охуел.
С свифте не могут храниться структуры произвольного размера. Только одного размера, одного типа. Соотвественно решается всё тривиально.
Вот так, например, делается буфер для битмапа, для рендера имиджа. Если нужно предельно чёткое управление буфером. Например в случае если ты знаешь сколько у тебя будет каналов на пиксель. Так же таким макаром, задавая размеры для массивов можно существенно оптимизировать бинарник и увеличbть производительность программы. Гугли перформанс толк в WWDC18
Да в этом случае вступает движок и сам рассовывает все по местам, где то в стек где то в кучу, я туда даже боюсь заглядывать
Вот вопрос из того и возник, что если структура создана на стеке, то она либо копируется в буфер (и тогда мы получаем во-первых структуру не на стеке, а во-вторых - нарушается выравнивание буфера), либо хранится только указатель на структуру, но где тогда хранится сама структура, если, например, мы выходим из функции, и вершина стека (где лежала структура) разрушается? Я вот так и не нашел вразумительного объяснения внутреннего устройства свифтового массива.
В книге его и нету. Полазий по эпловскому гитхабу поспрашивай там, авось глядишь и контрибутить начнёшь.
>и вершина стека (где лежала структура) разрушается?
Структура дохнет. За нас всё делает компилятор(движок).
Ты кто, братюнь?
В Swift нет обычных структур как в C, там все конвертируется в классы при компиляции, т.е. CGRect, CGPoint и т.д становятся классами.
В массиве хранятся указатели. После завершения функции вся память автоматически освобождается.
Декомпильни программу и сам посмотри, как Swift конвертирует структуры в классы.
Нормально
оба размера картинки умножаются на scale (и длина, и высота).
общее количество пикселей, очевидно, умножается на scale^2
https://swift.org/server/
как узнать задержку отклика в смартфоне
Офкос. Небось еще как дубликат пометят.
Гугловские что ль? Берешь и гуглишь ios Material design. Находиш MaterialComponents, все. Там будут гугловские из первых рук MDC*.
Конечно, через uicollectionview например.
Теперь по пунктам, чего я хочу от приложения:
1. Возможность текстового заполнения расписания
2. Счёт недель
3. Возможность отметки собственного посещения
4. Автоматическое определение даты и вывод нужного расписания в этот день
5. Гиперссылки на предметы/преподавателей отзывы/краткая инфа мб с фото
Вопросы: Можно ли сделать это приложение человеку, который только на школьной информатике изучал паскаль и немного хтмл? Сколько времени займёт написание этого приложения? Как его выложить в аппстор? Как его тестировать? Как его перенести на андроид?
Хуйня полная, регулярно обновляемое расписание должно быть на сайте ВУЗа, а через приложение ты получаешь доступ к нему.
У нас на семестр выкладывается расписание. Только я не понял чего хуйня? Сейчас я пользуюсь оформленным под себя скриншотом из ворда.
>>60667
Нет, только "админ". Я уверен, что точно не смогу сделать программу считывания информации с источника. Либо придётся делать какое-то автозаполнение и раз в семестр качать обновления.
Нужно сделать так, чтобы приложение запускалось в фоновом режиме и присылало пуш-уведомление.
Нагуглил, что для этого используется Background Fetch
Сделал всё как нужно: разрешил в настройках, установил минимальный интервал в App Delegate, написал функцию. И она даже один раз отработала на реальном Айфоне. А потом сломалась!
Запускаю прогу на эмуляторе, нажимаю в XCode "Debug" -> "Simulate Background Fetch" и нихуя!
Ветка IF даже не выполняется, а сразу перекидывает на Else.
В чём может быть косяк? Работало же раньше.
Мне нужно сделать несколько проектов, с практически одинаковой кодовой базой
Отличия будут состоять - в нескольких экранах, строковых ресурсах (например для русскоязычной аудитории только строки на русском) и отображаемом контенте
В студии это все легко решалось раскидыванием отличных ресурсов и кода в папки flavor. Можно подобное в xcode сделать?
Гугли targets и localizable.strings
Так может нет рут контроллера?
Ок, работают по индексам. Так тебе нужно написать let startIndex = 30 строчек, потом ендИндекс = 30 строчек, потом подставить в str[sta...end] и получить желаемую СТРОКУ.
А в джаве всего лишь сделал stringBulder.subsgtring(2, 10) и все. Мне кажется, кто-то усложняет язык.
Во-первых можеш кастануть к NSString, будет так же как obj-c/java.
Во-вторых это не просто так сделано, а что бы все кодировки-кодировочки работали.
Лол, ты без этого языка 84года даже кнопочку не нарисуешь, ибо свифт это лишь обертка для ObjC API.
>свифт это лишь обертка для ObjC API.
Вы откуда такие олдфаги понабежали? Думаешь защищая старое говно ты сразу становишься авторитетнее в глазах оппонента? А вот хуй тебе в рыло, долбоеб.
>>61580
>неужели все-таки пытаться изучить этот старый 84года выпуска язык?
Да, ибо легаси-хуегаси. Но удовольствия от этого языка не получишь точно.
Неплохой сишный скилл. Обжктив без сомнения хороший язык потому что открывает прямой доступ к сям.
>Вы откуда такие олдфаги понабежали? Думаешь защищая старое говно ты сразу становишься авторитетнее в глазах оппонента? А вот хуй тебе в рыло, долбоеб.
По существу есть что сказать? Ты же защищаешь обертку для старого говна.
Нарисую, а что и чем будет компилироваться меня не ебет.
Вот тут довольно неплохо описано, почему это так, а не иначе. Вкратце - потому что юникод. Потому что условно слово "ёж" может быть длиной 2, а может быть длиной 3, если букву ё разбить на е + "диакритический символ две точки сверху", и буква ж будет в обоих случаях иметь разных индекс. Поэтому у тебя есть символы, есть графемы, есть графемные кластеры, нормализованные формы, есть переводы туда-сюда, и они требуют процессорного времени, и если бездумно хуярить обращения по индексам, приложение будет люто тормозить, и свифт тебе это наглядно показывает количеством кода, которое тебе надо написать. Если ты понимаешь, как это работает, то можешь написать мало кода, и точно знать, что это будет работать быстро и эффективно.
https://medium.com/@tonyallevato/strings-characters-and-performance-in-swift-a-deep-dive-b7b5bde58d53
т.е. че получается, если я по инту буду обращаться, то могу обратиться к куску юникода?
Типа того
но я не хочу так жить, почему нельзя было сделать через фиксированный размер символа, (как в utf-8 ?)
да, спасибо.
В utf-8 как раз таки ширина варьируется.
> буква ж будет в обоих случаях иметь разных индекс
Буквы е будут иметь разный индекс. Почему ж тоже ?
Однажды я ебланился в ведре с SearchView, через блядскую рефлексию находил сабвьюхи и менял на нужные мне.
Какже мне было сегодня грустно когда тоже самое приглось делать в ios. Простая задача - поменять радиус скругления в бэкгрануде UISearchBar'a.
Вариант 1
Думаю щас возьму UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]) и все пучком.
Результат 1
Хуй там плавал, для проверки попытался назначить font - не работает, на стеке пишут что работает, может когда-то работало, но сейчас только defaultTextAttributes работает, но там скругление не задашь. А принятый ответ - перебрать все subviews subviewsов серч бара и там найти UITextField.
Вариант 2
Посмотреть чть там за говно в иерархии и разобраться кто дает этот скругленный бэкраунд.
Результат 2
Нашел что там есть приватный наследник UIImageView, в котором используется растягиваемая картинка, и о чудо - ее можно поменять через метод UISearchBar.
С легкой душей UIGraphicsBeginImageContext...UIGraphicsEndImageContext, ...stretchableImage. И тут хопа - картинка не тянется как надо, в ширину - ОК, в высоту - не ОК. Ладно хуй там зададим фиксированную высоту. Но теперь слетел отступ между иконкой поиска и вводом, впрочем его можно выставить, ну хоть так.
КАКОГО ХУЯ ТАКАЯ МЕЛОЧЬ ТАК ХУЕВО ТО А БЛЯТЬ
Да это вечная история. Юикит очень плохо настраивается. Лучше поговорить с дизайнером и объяснить что лучше юзать стандартные контролсы или говорить с босами и писать свои. Например можно расковырять Телеграм и охуеть от количество ЮИ кода для казалось бы всего-лишь месенджера. Они там даже Core Text юзают.
В случае D-формы записи у тебя будет на нулевой позиции е, на первой - "две точки сверху", на второй - ж. То есть индекс буквы ж - два.
В случае C-формы записи у тебя на нулевой позиции ё, на первой - ж. То есть индекс буквы ж - один. А не два. Буква е будет только в первом случае, во втором будет сразу композиция.
>В случае D-формы записи у тебя будет на нулевой позиции е, на первой - "две точки сверху", на второй - ж. То есть индекс буквы ж - два.
>В случае C-формы записи у тебя на нулевой позиции ё, на первой - ж. То есть индекс буквы ж - один. А не два. Буква е будет только в первом случае, во втором будет сразу композиция.
Нихуя не понятно. Это нужно лишь сеньорам помидорам. Нахуй вдаваться в такие подробности.
Мне достаточно того конвертера чара в стринг и обратно. Достаточно ебанутый язык.
Это не язык ебанутый, а область применения сложная. Когда-нибудь все равно придется с этим разобраться.
https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html
2 пик - это что, в одной utf розы, а в другой виоленсе? Я правильно понял?
Хуйню бугуртящую пишет.
Бугуртит пушто юникод ёбнутый стандарт. Пишет же что обобщённые правила к нему трудно применить
Для ведройда не актуально, там достаточно просто свг кинуть и система в каждом телефоне сама замерит размеры. А что, в иосе не так? Фу, параша.
Есть задача - "С помощью функции определять какой из квадратом шахматной доски черный, а какой белый"
Собственно, вопрос. Как сделать так, чтобы в print сообщение выводилось один раз ?
Ну,бля, по тому дерьму что загружают в плей, оно и видно, что вы от рандома хуйню туда кидаете.
так только дауниты типо тебя делают
Спасибо.
Ты используешь много того, что я еще не изучил, сохранил твой варинт решения, на будующее.
Для простых приложений, всё что тебе нужно знать, как зайти в главную очередь из очереди, в которой работает хттп реквест.
https://www.swiftbysundell.com/posts/a-deep-dive-into-grand-central-dispatch-in-swift?rq=Queues
let task = URLSession.shared.dataTask(with: url) { data, response, error in
callback(data)
}
task.resume()
}
В таком коде утечки памяти нет?
Делай скрин из хкода, а то читать не удобно. А так я думаю это вообще не будет работать, но так как неудобно читать, могу ошибится
Утечки нет, но сам callback может захватывать что-то, на что сильную ссылку держать не хорошо. Так что если ты это вызовешь вот так:
request(url: url) { data: Data? in self.onResult(data) } И self это контроллер, то будет не очень хорошо. Чинится через [weak self] например.
Ну и на какие ресурсы стоит выкладывать и что, по-простецки ссылка на папку с прожектами на облаке или заморочиться и посношаться с гитхабом (при том что нах там этот мусор нужен который и так все пишут кому не было лень)?
А если я веду страничку с полезными материалами и делаю пет проект? Мой гитхаб зеленее некуда.
Покожы
Залей на битбакет тогда, там у всех нихуя нет. С таких сервисов просто клонировать легко, или прям там код глянуть.
>Уже сутки ебусь с этим
Ньюфаг.
>Задача - сделать так, чтобы при анимации вставить кастомную вьюху в дефолтный
Слишком обобщено. Могу так же ответить. view.animate.alhpa or view.setVisibity.
Сорвалося. Итак.
Задача - сделать так, чтобы в рамках одного вертикального стека навигатор контроллера в определенных местах появлялся родной нижний тулбар этого самого навигатор контроллера. Делается это для того, чтобы при анимациях перехода между некоторыми вью контроллерами нижний тулбар был неизменный. Проверено, работает. Кастомная вьюха туда засовывается со всем функционалом и т.п.
Проблема - я засовываю туда свою кастомную вьюху как, например, let y = UIBarButtonItem(customView: x)
Ну и после добавляю в self.toolbarItems = [y]
Включаю отображение тулбара у навигатор контроллера и все бы хорошо, да какие-то инсеты и внутренние контреинты у стака, который внутри туллбара, все портят. Как я только не пытался, и перебором сабвьюх и т.п., но побороть адекватно(чтобы сеньйор меня не отпиздил) горизонтальные отступы в 16 точек никак не получается. Я уже думал скостылять весьма ужасно, но подумал, что мб кто тут сталкивался. Инет облазил, решение для ios 11 и выше не подошло, раньше люди решали данную проблему отрицательным отступом аля negativeSeparator, но из-за автолайаута у UIBarButtonItem в ios 11, это решение тоже больше не подходит.
Сорян, случайно с мака не ту комбинацию нажал, сообщение при написании отправилось.
Не не не туда. Делается с помощью контейнер вью контроллера. А там на что фантазии извращенца хватит.
Что именно делается? Смена по середине вьюх в нем? Или речь о нижней панели в нем?
В первом случае переписывать овер дохуя, во втором он итак сейчас примерно так сделан, но при анимации пуша и попа, он один хрен приезжает с новым скрином, а в случае с тулбаром все чики-пуки. Сеньор сказал рыть в эту степь, думаю решение где-то рядом, но не могу его нащупать
Проще не ебаться со стандартным таб бар котроддером, это я уже понял. Свой аля таб бар на контйнер контроллерах пишется довольно просто. И если нужно любое кастомное поведение таббара, намного целесообразнее накостылять свой. Там ничего особенного в таббар контроллере нету. По уровню это так же как тейбл вью посадить в обычный контроллер и получить тейбл вью контроллер. То есть ничего такого он вообще не делает.
ну прост я привыл в ведроиде каждый чих делать в фоне, а тут же божественный айфон, который никогда не тормозит!! (даж на реальном девайсе проверял)
делай return сразу после нахождения искомого цвета.
Решение у тебя конечно пиздец какое квадратное. почитай про разворачивание многомерных массивов в одномерный
https://github.com/MFlisar/GDPRDialog
чет не гуглиться ничего
вообще ios community какое-то вялое. Статей, примеров и либ в разы меньше
простейшего wrap_content для label нет, чтобы вьюха сама расчитывала ширину/высоту по контенту. пиздец, просто днище
Жаль. Спасибо
но ведь беспричинные спонтанные выкрики как раз свойственны дайнам :thinking-face:
игру - симулятор hr-a
Можно ли ограничиться эмулятором?
Хотел бы вкатиться к уважаемым господам в разработку.
По началу да, симулятора хватит, но потом совсем нет, пуши как минимум не проверишь на симуляторе.
Если я захочу устроиться на работу, там спрашивают девайс?
Если ли смысл изучать свифт без знания джавы?
>Если я захочу устроиться на работу, там спрашивают девайс?
Ну это какая-то бичевская контара будет делать мне кажется, пусть сами выдадут девайс, есл спросят думаю лучше обойти и стороной. У некоторых вообще есть практика выдать девайсы в лизинг с выкупом так сказать (не уверен что я правильно сказал), ведь тебе нужно понимать юзера и тренды.
>Если ли смысл изучать свифт без знания джавы?
Слабо связанные вещи, джава пригодилась бы бы только для общего знания, возможно как новичку только бы мешала.
У эпла очень сильная команда разрабочиков симулятора. Платя членский годовой взнос, ты вместе с Xcode получаешь полноценную iOS на своём маке. По опыту разработки могу сказать, что кому как удобней. Кто любит смотреть на девайсах, кто любит на симуляторе, как я. В принципе без девайса можно разработать хоть всё приложение и не боясь в таком виде закинуть в стор. А пуши, да и хрен бы с ними. Всё остальное на симуляторе есть.
>Если я захочу устроиться на работу, там спрашивают девайс?
Да, а если у тебя se, то сразу готовь ебало - обоссут.
>Платя членский годовой взнос, ты вместе с Xcode получаешь полноценную iOS на своём маке.
Мань, тебя наебали, xcode и симулятор распространяются бесплатно и нужен только apple id
Насчет второго согласен, а по поводу SE хз, у меня в кабинете 4 разраба, у всех SE, ну и как бы я один тут джун. И практически все из них солидарны со мной с тем, что пока что ничего лучше SE и удобнее не сделали.
Я пока сидел на форм факторе 4С думал, что лопаты не нужны. Сейчас планирую обновить 6С на 7/8+ ибо фаблеты решают. И абсолютно похуй как телефон лежит в руке.
Согласен полностью! Только хожу с 5s пока что, но планирую скоро покупать SE! Это лучший форм фактор кмк, лопаты не люблю!
>фаблеты
Я до этого сидел на фаблетах лопатах и не нужен функционал планшета в виде диагонали. Наоборот с радостью остаюсь на се
Каждому своё. Мне книги удобнее читать на 7-8". Сосаку скроллить удобнее. Впрочем я на зечане сижу. Удобнее моделировать, например в PacketTracer. Статьи писать существенно удобнее для confluence на экране побольше. Я уж не говорю про сетевые штуки навроде ssh/rdp.
Я бы на айпад давно бы перешёл, даже на 12" с клавой, но он сучий потрох не умеет в смс и звонки. Пидоры из скупердино спецом не завозят.
Как бы хотелось сидеть за айпадом пиздить помбеспроводной клаве по телефону, а параллельно заниматься работой.
Но хуесосу куку виднее, он лучше 3 нахуй неактуальных айфона зарелизит.
Чому нит? Битрикс/jira и даже slack. Удобно пиздец. Так то на работе стоит печь с двумя 27" мониторами, но это же с собой не возьмешь в дорогу.
так это мне вас благодарить за то что многие программы не интегрируются с 3d touch'ем и ландшафтным режимом?
Почему нельзя? Можно. Добавляй файли и поставь галку что таргетится в тестовый таргет.
swift. В Аррее только есть метод содержания строки.
пиздец. еще и неправильная ебала. Я хуею.
Это тоже не работает. Тебе же нужно что бы там была именно подпоследовательность, а не просто все внутри другого есть?
Вообще не встречал такого в стандартной бибилотеке где-то.
Именно последовательная подпоследовательность. Думаю конвертнуть массив в стринг, в
Но в свифте тоже такого метода нет блять. Вот, придется все писать, получить стринг и сделать сабстринг
Ты по сути расширяешь класс коллекций. Но это костыль как ни крути.
За решение и потраченное время на меня - спасибо!
Этот костыль (extensions) для этого и был придуман, собственно. А стандартная либа у эппла, конечно тухлая, у меня вон все новые проекты начинаются с копирования пары десятков extensions стандартных классов.
Блядь, даже стыдно стало.
Делай под
Пишешь обычный конечный автомат (ну или не так называется), че ты как этот. Вон сходи с задачей в тред олимпиадников они сразу узнаешь.
он же open source, закоммить там эту функцию им, если считаешь что она нужна больше чем 1.5 человекам
тоже не понимаю нахуя нужны джуны когда уже рынок завален сениорами от рождения задешево
а ведь точно, спасибо
Допустим я возьму получу его класс через NSClassFromString("_UITableViewCellSeparatorView"), как потом проверить что вьюшка принадлежит этому классу?
Ой бля, написал вопрос, запустил код и он сработал, нашел его таким макаром.
>Хочу спрятать разделитель
а просто tableView.separatorColor прозрачным сделать и в xib'ах своих вью нужный нарисовать/не рисовать не судьба?
Я же сказал что мне нужно спрятать только разделитель между заголовком секции и строками секции, а не все разделители.
А рисовать я ебал, все прям как по дизайну и изкаропки.
Мне кажется ты тугой. Я написал что не хочу рисовать кастомную вьюшку ни для заголовка, ни для строки. А tableView.separatorColor влияет на все разделители, как на между заголовком и строкой, так и между строками.
там у UITableViewDelegate есть методы с viewForHeaderInSection и heightForHeaderInSection. Мутишь кастомный хеадер, пихаешь его, а строки таблицы будут с твоим желанным дефолтным сепаратором
Я знаю, но я там возвращаю UITableViewFooterHeaderView. Таким образом не приходится возится с синхронизацией отступа между у textLabel в UITableViewFooterHeaderView и UITableViewCell, а если свой туда хуйнуть то может случится рассинхрон когда эпл решит что стандартный отступ теперь не 16, а 17.
Ну и конечно не проверял, но думаю разделитель останется, так как он рисуется не в заголовке, но в первой строке после него.
хмм, я такой проблемы не замечал
Сижу на августовской бетке. Полёт нормальный. ld маленько подглючивает, иногда приходится вручную тыкать. Ну а так всё шикарно. Опять новую документацию завезли.
вот же пидерасты
ну ок, читаю - To avoid a delay in receiving your order, please update your payment information by signing in to your Order Status page. СУКА, перехожу по ссылке и что блять вижу ???
There was a problem with your request. Please try again.
БЛЯЬТ!!!1
контакт ас - чата нет, почты нет, позвони нам в сшай, чего ты!! лучший суппорт в мире
Блять, все, абсолютно все что связано с разработкой для apple - ебля с переходниками, инструменты разработки, язык, сдк, тестирование на девайсах и даже блять публикация (да нет, даже до публикации пока не дошел, хуй заведешь аккаунт блять) - все одна сплошная боль, боль, страдания и унижение
как же я теперь понимаю вас пацаны. быть ios разрабом - значит быть терпилой куколдом, жрать говно постоянно, каждый день, пассивно наблюдать как над тобой издевается apple. не удивительно, что многие не выдерживают, едут крышей, начинают в жопу долбиться, менять пол.
доделаю заказ и пошло оно все нахуй, пойду полгода на завод ебашить, к нормальным мужикам
Да все мы через это проходили. Не ссы, те пришлют какую-нить пдфку, ты поставишь подпись и отправишь обратно. Так же может быть твой банк под санкциями. У меня со Сбера не проходило в своё время, поэтому для таких случаев держу в Райфе счёт.
Поэтому я разрабатываю под андройд, а пишу на маке.
payoneer заведи, че как пидорашка то
хз, у меня пайпал для всего не в России, никаких проблем. Да и с эплом в целом обычно тоже как из коробки, все простые приложения пишутся быстро и легко, заказчик таких не запаривает обычно с кастомной хуйней, так что прототип накидывается, как правило, за 1-2 дня работы
Safe area гугли
А, ну и эпл немного подбешивает этим, например нижний контроллер как в приложении "карты" тоже нет стандартного, приходится либами с гитхаба, состряпанными н коленках пользоваться. Все приложения равны, но приложения эпла равнее
Ну джун такое не сделает, мидл сделает. Для этого надо норм опыт с ЮИ китом иметь
Я может чего-то не понимаю, но здесь же просто плашка со скгрулением прижатая к низу экрана, лейбл, картинка/кнопка, картинка и кнопка.
В чем прикол?
Джун не сделает вью с корнер радиусом 15 и 3 эелементами и не сможет все это анимировать в контроллере? Ты смеёшься?
ауу, там внутри контроллер, с таблицей, например + обработка всякой хуйни по типу скроллинга
Прошел курс скутаренко по Свифту, хотел начать UIKit зашел на канал одного, но там только сухие команды и никакой единой цели, ради чего мы это пишем(приложение). Начала смотреть Стэнфордский курс, но с английским туго, но проблема не только в этом, понял, что не оч хорошо освоился материал, нужно повторять, вот сейчас решил пройти курс скутаренко по obj-c скажи анонс, правильная ли мысль пришла в голову, думаю если в Свифт иногда нужно заимствовать из obj-c то он необходим в изучении, стоит ли заострять на нем внимание, сейчас на нем вообще пишут?
>>68770
Гугли на амазон или в iBooks кнгу по созданию аппа на свифте. если нет, то тогда учи obj-c и иди по книге на obj-c. Но что то мне подсказывает что книг создания аппов на свифте уже много.
Глянул
https://itunes.apple.com/ru/book/app-development-with-swift/id1219118093?mt=11
Ну и ещё там дохера
то есть эти книги именно как поэтапно создается приложение и его структурированность?
Да и как думаете, стоит ли распылиться и подучить obj-c или лучше вложить это время в дрочку на Свифт?
Лучше просто подрочи и дух программиста как ветром сдует
А для по алгебре что посоветуешь? Иногда бывает думаешь как же исполнить задание, в итоге через несколько часов сдаешься, подсматриваешь и понимаешь, что все более чем легко, но вот логику и вычисления не догадался, как это фиксить, может по логике что почитать?
Просто мне легче переехать в питер чем в перечисленные города, да и вакансий там поболее я думаю
Вакансии тухлые
Apple меня опять наебала?
Это же каким надо быть аутистом, чтобы это не сделать?
Меня, как джуна на собеседованиях просят Core Data/GCD/все архитектуры и теперь юнит-тесты знать, а ты какую-то анимаху не можешь
Как джуна джуниоров мне кажется в основном просят сходить писос пососат пока до мидла или сениора не дорастешь, где ты это сделаешь ясен пень никого не сношает.
Не собрались ещё пока что
>Сейчас бы изобретать велосипед, если есть готовые решения. Ну если на поиск, импорт, починку и доработку "готового" решения уходит больше времени, чем на написание "велосипеда" - почему бы и нет?
Я вот, например, для прошлого приложения не смог найти полностью удовлетворяющей меня фотогалереи (но смог закостылить одну из имеющихся). А вот компонент для отображения календаря, который бы нормально отрабатывал смену ориентации на айпаде я так и не смог найти, пришлось самому писать.
Я джун, одно из первых заданий как раз и был вот такой "попап" с затемнением остального фона и дисмиссом при клике на фон.
Сделал, ничего не зная, за день, примерно. Сделал просто свой кастомный UIPresentationController с настроечками да и все, собственно.
Ну и мое мнение как и коллег(сеньоры все дела), что захламлять проект вот такими мелкими уебанскими(обычно) либами с гита верх дилетанства. 100 строчек кода занял мой кастомный презентер и никаких гавнозависимостей создавать не надо.
Кстати, к слову, меня точно также заставили сделать свое кастомное бургер-меню и что-то вроде свичера страниц горизонтального, но с прибамбасами типа докрутки и т.п. Вот его я делал неделю, наверное)
b/ольную правду глаголишь b/рат
Внезапно :]
Похоже ты из категории даунов которые никогда не выучатся и так и будут вечными студентами которые смотрят курсы и ищут волшебную таблетку, не обижайся я сам такой, в твоем посте узнал себя.
можно залить через тестфлайт.
можно установить по проводку, как и дебажную, но дебаггер к такой сборке не подключится.
Сложение, вычитание, умножение, деление, сравнение, порядок действий, дроби.
Realm, сучка.
я купил тренашку 2017, хз макбук как макбук, разъемы говно конечно, хотя у меня до этого только 2013 был, и то я потом уволился и отобрали
В бандл. Приложение когда билдится делает бандл. В билд фазе указываешь что хотел бы видеть в этом бандле файл с текстом.
Если есть для кого - для братана,
Если есть за кого - за братана.
Для пацана цель жизни проста-
Жизнь стараться прожить ДЛЯ БРАТАНА!
Брата за Брата, так за основу взято!
Ключ правильный? Проверить настройки в адмобе.
2015 понятно, из-за чего убер аллес, а остальное почему?
Что там с клавиатурой, говорят, засирается моментально?
ахаха, ну это уже senior левел
У 2016 пиздец хуевая клава и производительность. У 2017 уже получше. В 2018 вроде как окончательно решили проблему с залипаниями клавиш, а также есть ощутимый буст по производительности.
Ок
Можешь подсказать еще, если знаешь: решил поизучать SpriteKit, когда в проекте выбираю GameScene у меня Xcode крашится. Я читал что это связано именно с запуском оной на хакинтоше с nvidia. Так ли это?
Как вкатиться в swift и не получить просадку по з/п $2500? Все ли у вас нормально в языке? Какие перспективы по РФ? Какие перспективы на фрилансе?
Молю о инфе со слезами на глазах...
Вот вроде простая штука, а тут хоп и хуй сделать по нормальному и ты либо делаешь что-то кастомное или начинаешь накручивать костыли вокруг.
ну пока не отправил, не хотели регать
тупизм блять. мне надо бренд свой раскручивать, а не имя светить
Падажжи ебана, так у тебя в сторе будет твое имя видно в качестве разработчика или что-то другое?
да, если хочешь название своей фирмы (например), то нужно доказать, что такая фирма существует, зарегистрированна и имя не кофликтует, я сильно не разбирался
Аноны, выручайте. Нужно получить токен авторизации, путём посылки параметров методом POST.
Никогда раньше с этим не сталкивался, а документация скудная. Написал запрос, но получаю ошибку 400.
Т.е. сервер меня слышит, но не может разобрать мои параметры. Этот ёбаный grant_type я беру из тех задания (пик 2).
Примеры не гуглятся.
Короче вот что удалось нагуглить.
Для application/x-www-form-urlencoded, тело HTTP-сообщения, отправленного на сервер, по существу является одной гигантской строкой запроса - пары имя/значение разделяются амперсандом (&), а имена отделяются от значений равными символ (=).
Т.е. в requestBody нужно передавать параметры не как словарь, а просто как строку. Не знаю поможет ли. Смогу проверить только вечером.
Либа которая под ресурсы генерит классы, чтобы ты грузил картиночки не
let image = UIImage(named: "smile_govno)
а юзал изкаробки
R.image.smile_govno
R.swift/Swiftgen
Юзаю джва года почти, зависимость лютая. Типизирует не только картиночки, но еще стринги, сториборды-ксибы и уйму всего другого.
Смотрите, что написано в документации:
Для доступа к методам используется авторизация с помощью токена доступа. Для его получения необходимо отправить POST запрос:
Это я сделал. А дальше:
Получение списка городов
Тип запроса: GET
Метод: Cities
Метод возвращает массив объектов ListObject – список городов.
Что за метод Cities может быть у GET-запроса? А куда там токен вставлять? Ни примера нет, нифига нет. Есть у кого идеи?
>Что за метод Cities
Название метода. www.your_url.com/Cities — get запрос.
Токен иногда вставляют прямо в querystring бывало и такое, мда либо в HTTPHeaderField. Но я бы рекомендовал тебе залить свинца в горло тому, кто писал такое говенное ТЗ.
>>74831
Парень, ты дурной? Вон я сверху >>74668 тебе пример привел. Тебе его сложно осилить? Другой анончик тебе название либ дал — тебе западло посмотреть и ПРОЧИТАТЬ БЛЯДЬ ОПИСАНИЕ? Там ведь как раз и описываются проблемы, которые либы решают. Черными английскими буковками на белом фоне:
>There are multiple benefits in using this:
>Avoid any typo you could have when using a String
>Free auto-completion
>Avoid the risk to use an non-existing asset name
>All this will be ensured by the compiler.
Во-первых, сверни всё дерьмо. Поставь postman или httpie, и ими уже понимай что как общаться с api. Переносить на swift будешь когда разберёшься что ты вообще должен сделать.
Там сваггера случайно нет у документации?
>Название метода. www.your_url.com/Cities — get запрос
Спасибо, анончик! Это вроде бы так очевидно, но слово "Метод" сбивало с толка.
Осталось разобраться с передачей токена, ибо пока мне приходит ответ: <Message>Authorization has been denied for this request./Message>
>Но я бы рекомендовал тебе залить свинца в горло тому, кто писал такое говенное ТЗ
Полностью согласен. Но это как бы тестовое задание, лол.
Всё, посоны, разобрался. Токен нужно передавать в заголовке, по ключу "Authorization" с префиксом "Bearer", т.к. используется OAuth 2.0 Видимо, я должен был об этом догадаться.
Всем спасибо за помощь.
Ну типа объяснение, почему Х ось у лидинга в одну сторону идет, а трейлинга в другую.
там что-то про языки которые читаются справа налево и почему константы так называются, я же спрашиваю про другое, перечитай плиз мой пост с вопросом. ну это как если спросить как пройти в библиотеку, а вместо того чтобы рассказать как пройти от точки нахождения - рассказывать от обратного, в стиле "библиотека там, где 100 метров от поворота на лево, до которого тебе идти отсюда вправо 200 метров"
Рандомные ошибки при компиляции, после установки подов опять просит мигрировать на 4.2, причем уже мигрировался и не может, так как под старый синтаксис-то файлы не подходят!
Вот что с таким говно делать? (Лечится чисткой, презагрузкой, ну или просто пра руаз попробовать сбилдить/запустить)
Abort trap: 6
Instruction does not dominate all uses!
%112 = load i64, i64 %111, align 8, !dbg !1167
store i64 %112, i64 %85, align 8, !dbg !1185
Instruction does not dominate all uses!
%112 = load i64, i64 %111, align 8, !dbg !1167
store i64 %112, i64 %97, align 8, !dbg !1190
<unknown>:0: error: fatal error encountered during compilation; please file a bug report with your project and the crash log
<unknown>:0: note: Broken function found, compilation aborted!
Документация к API - это просто какой-то инфернальный пиздец.
Мне осталось выполнить последний POST. И что же оказывается?
1) В документации параметр Year описан как String, а на деле должен передаваться как Int;
2) Параметр City в документации вообще отсутствует, но сервер без него ругается;
2) Ещё один параметр должен быть определённой длины и определённого формата, но об этом тоже в документации ни слова.
После приведения параметров в надлежащий вид сервер присылает Status Code: 500
Это, блеать, вообще нормально?
Да хрен его знает. Нашли моё резюме на HeadHunter, которое я уже сто лет не обновлял. Пишут, что ищут iOS программиста на удаленку. Прислали тестовое задание. Суть в том, что нужно сделать форму, где некоторые поля заполняются юзером в ручную, а некоторое выбираются из списка. Списки нужно выдергивать из API. Потом готовую форму нужно отправить назад POST’ом. Что-то похожее на фильтр в мобильной версии Авито.
Казалось бы ерунда, если бы не кривая документация.
Ну сделал, хули. Посмотрим, что они ответят.
itunes connect дебич
вкатывайся в android, там есть все что надо
Это колбек на мейн тред из треда в котором работает класс URLSessionTask. Открой Xcode -> Documentations -> Foundation -> URL Loading System
А с какого рода программой ревью проходил? что-то простенькое или клиент-серверная приложуха?
не вкатывайся во фронтенд, это такая клоака, что я блять ебал ёё маму рот
аналогичная хуйня
простое довольно, в сеть только либы (типа fabric) ходят
> всегда постманом пользовался.
Качать постман, устанавливать эту парашу на мак, вместо того, чтобы скачать расширение для гугла rest client и все.
Я не понимаю постманов даунов.
Так а какой асинхронщиной пользуются в иосе? Мне челик сказал, который уже 4 года разрабатывает, что этого вполне достаточно, и сам он пользуется таким подходом. И каллбек это main async.
Ну раньше он был плагином, мне удобно приложение отдельно, что бы когда жмешь cmd+q не весь браузер схлопывался. Пиздец поставить приложение неудобно.
>>76748
Ну вот когда тебе нужно будет не просто кнопку отключить и показать лоадер, и не в одном месте, и дождаться результат несколкьих запросов, и преобразовать их как-то поймешь почему это не всегда удобно.
Я привык к Rx, в данном случае RxSwift.
gcd/NSOperation. Не слушай реактивщиков, сначала изучи нативные средства, а потом посмотришь сам.
Тебе не кажется что Operation для новичка крутовато? Это для низкоуровневой поебени, ну и конечно не стоит тащить rx для простых вещей.
>Не слушай реактивщиков, сначала изучи нативные средства, а потом посмотришь сам
Ну да, так и думаю. В андройде сразу погнался за реактивщиной, в итоге вот спустя год только разобрал, как оно работает все снизу. Ок, запишу и потесчу.
Для какой низкоуровневой поебени? Оно на базе gcd сделано, gcd сам по себе более низкоуровневый. Ну и имеет смысл юзать только если нужны фишки, которых в gcd нет. Так-то gcd наше все.
Делать микс из свифта и обж-си. Сначала делаешь файл бриджинг-хеадер.h , там импортируешь хедеры обж-с файлов, которые хотел бы видеть на свфте. Свифт компилятор под копотом синтезирует свифтовый интерфейс для обж-с классов, пользуешься им в свифт файлах.
>apt
Я имею ввиду для айос разработки.
Вряд ли ты запускаешь виртуалку с линуксом.
Да и утилита не делает даунскейл и не ставит суффиксы @3x, @2x.
Есть ли какое-нибудь йоба решение специально для айос разработчиков чтобы делать все в один клик(строку) со всеми мокрописьками?
В скетче/фигме. Там даже плагины вроже есть, но можно и руками выбрать нужные иконки и натыкать им нужные размеры, суффиксы по дефолту подходят.
Ну и вообще ты погромист или где? Написал бы скрипт на баше что бы он тебе это говно экспортил.
Я складываю 4-е UInt8 в строку, чтобы потом превратить это в UInt32, который конечно же даст неверный ответ! Как это фиксится?
Покажи код, звучит как ты жедаешь какую-то хуйню.
Можно склеить переводом в масив байтов, можно сдвигами.
let part1: UInt32 = UInt32(UInt8.random(in: 0...255))
let part2: UInt32 = UInt32(UInt8.random(in: 0...255))
let part3: UInt32 = UInt32(UInt8.random(in: 0...255))
let part4: UInt32 = UInt32(UInt8.random(in: 0...255))
let combined: UInt32 = (part1 << 24) + (part2 << 16) + (part3 << 8) + part4
Я уже разобрался. Меня больше волнует как мне перехватывать вышедшее значение, после сдвига. Прочитал полностью UInt32 в доке не нашел такого.
Какой-то пиздец на картинке. Мне кажется ты что-то делаешь не так когда нужно проверять что произошло переполнение.
>Какой-то пиздец на картинке
Конечно пиздец. За столько времени я никогда с байтами и не работал. Поэтому все расписываю чтобы улавливать суть.
>не так когда нужно проверять что произошло переполнение.
В доке нет переполнения. Там есть сдвиг и запись в сдвиг и все. Первая мысль, что приходит, так это конвертировать это каждый раз в стринг, перед этим конечно же чекать количество нулей, а потом дальше от этого танцевать.
>В доке нет переполнения.
А, есть. Но мне все равно оно не нужно. Пойду реализую свой вариант.
запили про версию проги, поставь ценник на приложение в 75000 деревянных и встроенную покупку самую дорогую запили и вот тебе бесплатная реклама бесплатной версии через платную
Ну а хули ты хотел? Что объектный си был говном, что свифт на коленке реализовали как js какой-то.
And plot to reconquer the Wall,
With only our tongues for our swords.
We are the Little Folk--we!
Too little to love or to hate.
Leave us alone and you'll see
Как мне чекать что появилась новая строка? Если считывать посимвольно, то между ними как раз два пробела пролетают. Мне от этого танцевать или есть что получше?
Завезут в новых версиях.
> 2k18
> png
Лол, берешь svg, берешь ai, сохраняешь в pdf. Или ты потом на каждый чих эпла будешь добавлять @4х, @5.5х, @666х? А когда они объединят macOS и iOS? Ну нахер, вектор наше всё.
Запилят что-то вроде boost для свифта, лол.
Вы видите копию треда, сохраненную 26 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.