let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as? NSArray
let documentsDir = paths?.firstObject as? String
println("Path to the Documents directory\n\(documentsDir)")
пятница, 25 сентября 2015 г.
Шпаргалка по получению пути к директории пользователя в песочнице iOS/mac os
вторник, 22 сентября 2015 г.
Решение проблемы с HTTP в iOS 9
Если при попытке доступа к ресурсам в сети Интернет вы получаете получаете ошибку вида:
" App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. "
Значит, Вы один из тех страдальцев, кто по каким-то причинам не знает, что Apple озаботилась нашей с вами безопасностью)))).
Теперь по умолчанию запрещено использовать HTTP протокол в качестве транспорта. Разрешено HTTPS. Для тех кто не знает что такое HTTP/HTTPS вики/гугл/яндекс и т.п. в помощь.
Маленькое отступление.
В теории это наверное хорошо. Наверное, потому что, не все алгоритмы шифрования используемые в слое представлений транспорта HTTPS коллизионно устойчивы. Так алгоритм md5 несколько года назад считался абсолютно надежным и теоретически коллизионно устойчивым, теперь же им не стоит шифровать даже список покупок в магазине. А еще вылезают такие вещи как Heartrbleed, или скандал с Ubuntu, под которой несколько лет генерились идентичные сертификаты на разных серверах и т.д. и т.п. В общем идею вы поняли... Но у этой проблемы есть не только абстрактная но и практическая часть. Заключается она вот в чем: сертификаты для https стоят денег. Чаще всего от 100 до 300 долларов в год. Сразу удорожает хостинг, т.к. при использовании HTTPS вы шифруете заголовки и и веб сервер не знает к какому dns имени вы идете. В результате на 1 ip адрес приходится 1 https сайт. (Да я знаю, что Microsoft научила IIS заглядывать в заголовки HTTPS сообщений, и даже объясняет что это безопасно))). Но задайте себе вопрос сколько веб серверов работает на MS Windows Server/IIS и чтобы "2 раза не вставать" подумайте почему.)
И не то что бы сложно в настройке но требует от инженера дополнительных телодвижений и отвлекает его от WoW/WoT/Dota/(подставьте сами). Создает дополнительную головную боль при высоких нагрузках и балансировке. (Дадада. Знаю Cisco. А цену вы знаете?) Адреса IPv4 давно закончились. На IPv6 мир перейдет лет через 10. Может раньше. Но не в 2016 году.
В общем и в частностях HTTPS это безопасно(пока), но дорого и для мелких ресурсов и для крупных.
ИМХО перфекционизм Apple лучше направить на контроль качества своей продукции и ПО. Т.к. при покупке нового iphone 6 plus в аппсторе я получил кирпич и 2 недели ждал пока его заменят по гарантии. При покупке mb pro 13 в аппсторе я получил не работающее зарядное устройство. Но т.к. Apple нас..ть на мое мнение, то приступим к решению проблемы:
Добавляем в Info.plist :
Естественно YOURSITE.COM нужно заменить на url искомого сайта.
" App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. "
Значит, Вы один из тех страдальцев, кто по каким-то причинам не знает, что Apple озаботилась нашей с вами безопасностью)))).
Теперь по умолчанию запрещено использовать HTTP протокол в качестве транспорта. Разрешено HTTPS. Для тех кто не знает что такое HTTP/HTTPS вики/гугл/яндекс и т.п. в помощь.
Маленькое отступление.
В теории это наверное хорошо. Наверное, потому что, не все алгоритмы шифрования используемые в слое представлений транспорта HTTPS коллизионно устойчивы. Так алгоритм md5 несколько года назад считался абсолютно надежным и теоретически коллизионно устойчивым, теперь же им не стоит шифровать даже список покупок в магазине. А еще вылезают такие вещи как Heartrbleed, или скандал с Ubuntu, под которой несколько лет генерились идентичные сертификаты на разных серверах и т.д. и т.п. В общем идею вы поняли... Но у этой проблемы есть не только абстрактная но и практическая часть. Заключается она вот в чем: сертификаты для https стоят денег. Чаще всего от 100 до 300 долларов в год. Сразу удорожает хостинг, т.к. при использовании HTTPS вы шифруете заголовки и и веб сервер не знает к какому dns имени вы идете. В результате на 1 ip адрес приходится 1 https сайт. (Да я знаю, что Microsoft научила IIS заглядывать в заголовки HTTPS сообщений, и даже объясняет что это безопасно))). Но задайте себе вопрос сколько веб серверов работает на MS Windows Server/IIS и чтобы "2 раза не вставать" подумайте почему.)
И не то что бы сложно в настройке но требует от инженера дополнительных телодвижений и отвлекает его от WoW/WoT/Dota/(подставьте сами). Создает дополнительную головную боль при высоких нагрузках и балансировке. (Дадада. Знаю Cisco. А цену вы знаете?) Адреса IPv4 давно закончились. На IPv6 мир перейдет лет через 10. Может раньше. Но не в 2016 году.
В общем и в частностях HTTPS это безопасно(пока), но дорого и для мелких ресурсов и для крупных.
ИМХО перфекционизм Apple лучше направить на контроль качества своей продукции и ПО. Т.к. при покупке нового iphone 6 plus в аппсторе я получил кирпич и 2 недели ждал пока его заменят по гарантии. При покупке mb pro 13 в аппсторе я получил не работающее зарядное устройство. Но т.к. Apple нас..ть на мое мнение, то приступим к решению проблемы:
Добавляем в Info.plist :
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>YOURSITE.COM</key>
<dict>
<key>NSIncludeSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
четверг, 17 сентября 2015 г.
Как конвертировать Адрес в Координаты в iOS
let address += "ул. Ленина, 4,Омск, Россия"
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(address, completionHandler: {(placemarks: [AnyObject]!, error: NSError!) -> Void in
if let err = error { println(err.localizedDescription) }
if DEBUG { println(address) }
if let placemark = placemarks?[0] as? CLPlacemark {
let latitude: CLLocationDegrees = placemark.location.coordinate.latitude
let longitude: CLLocationDegrees = placemark.location.coordinate.longitude
}
})
Решение из : stackoverflow.com
Решение из : stackoverflow.com
Подписаться на:
Сообщения (Atom)