90 заметок с тегом
Swift
iOS: Модальные окна
4 ноября 2016, 11:42
закрытие модального окна
dismiss(animation:true,nil)
чтобы окно-всплывашка была поверх текущего окна
- выставляем цвет у View backgound: Clear Color
- у ViewController указыаем presentation: Over Current Context
let frame:CGRect = CGRect(x: 50, y: 30, width: 200, height: 300) self.view.frame = frame
ставим рамку и цвет рамки у PopUp окна
override func viewDidLayoutSubviews() { ... self.view.layer.borderWidth = 1 self.view.layer.borderColor = UIColor.black.cgColor }
получаем контроллер из Storyboard программно
let SpecialViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SpecialViewController") as! SpecialViewController
1 комментарий
Разница между Class и Struct на примере
28 августа 2016, 11:03
Class vs Struct
class Target { var location = "" } //struct Target { // var location = "" //} class Pilot { var target: Target = Target() } class Script { func run() { let luke = Pilot() let wedge = Pilot() luke.target.location = "Star Deth" // Люку приказывают лететь к звезде смерти wedge.target = luke.target // Вейджу приказано лететь туда же print("Luke target: \(luke.target.location)") print("Wedge target: \(wedge.target.location)\n\n") wedge.target.location = "Return to base" // Вейджу приказано вернуться на базу print("Luke target: \(luke.target.location)") print("Wedge target: \(wedge.target.location)\n\n") let result = luke.target.location.compare("Star Deth") if result.rawValue == 0 { print("Rebel wins ") } else { print("Empire wins ") } } }
iOS hide keyboard
22 июня 2016, 13:58
UITextViewDelegate
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { if(text == "\n") { textView.resignFirstResponder() return false } return true }
но это не выход если вам нужно
NotificationCenter
14 июня 2016, 9:43
описываем действие которое сработает как только будет принято сообщение
func actionHandler(){ print("It's work!") }
добавляем наблюдателя и обработчик события/оповещения
NotificationCenter.default.addObserver(self, selector: #selector(actionHandler), name: Notification.Name(rawValue: eventName), object: nil)
Послываем сообщение которое примет центр и передаст обработчику
NotificationCenter.default.post(name: Notification.Name(rawValue: eventName), object: nil)
lazy var
21 мая 2016, 10:41
lazy var context: NSManagedObjectContext = { [unowned self] in return self.persistentContainer.viewContext }()
PanGesture
11 мая 2016, 18:58
@IBAction func handlePan(_ sender: UIPanGestureRecognizer){ let translation = sender.translation(in: self.view) self.view.center.x += translation.x sender.setTranslation(CGPoint.zero, in: self.view) }
Сравниваем даты из NSDate
22 апреля 2016, 21:56
var dateComparisionResult:NSComparisonResult = currentDate.compare(endDate) if dateComparisionResult == NSComparisonResult.OrderedAscending { // Текущая дата currentDate меньше конечной даты endDate } else if dateComparisionResult == NSComparisonResult.OrderedSame { // Текущая дата currentDate и конечная дата endDate одинаковы } else if dateComparisionResult == NSComparisonResult.OrderedDescending { // Текущая дата currentDate больше конечной даты endDate }
CoreData: Create Read Update Delete
13 апреля 2016, 15:30
https://habrahabr.ru/post/303798/
// // DataHelper.swift // DaysList // // Created by Kirill on 13/03/2016. // Copyright © 2016 Kirill. All rights reserved. // import Foundation import UIKit import CoreData class DataHelper{ var context:NSManagedObjectContext init(context _context:NSManagedObjectContext){ self.context = _context } class func addRecord(_ _comment:String) -> Int64 { let newId:Int64 = (getLastId()+1) let context = persistentContainer.viewContext let day = Day(context: context) day.id = newId day.comment = _comment print("added day id=\(day.id):\(day.comment)") DataHelper.saveContext() return day.id } class func getAll(){ } /// Изменяем элемент /// /// - Parameters: /// - id: <#id description#> /// - _comment: <#_comment description#> class func updateById(id: Int64, comment _comment:String){ let day = getById(id: id) if (day != nil && (day?.id)! > 0){ day?.comment = _comment saveContext() } } class func deleteById(_ id:Int64){ let context = persistentContainer.viewContext let day = getById(id: id) if ((day?.id)! > 0){ context.delete(day!) } } class func delete<T>(item:T){ let context = persistentContainer.viewContext context.delete(item as! NSManagedObject) } class func getById(id:Int64)-> Day?{ let context = persistentContainer.viewContext let request: NSFetchRequest<Day> = Day.fetchRequest() request.predicate = NSPredicate(format: "id == %@", argumentArray: [id]) var days:[Day] = [] do{ days = try context.fetch(request) as [Day] } catch{ print("getById error") } let day = days.first return day } class func getLastId()-> Int64 { let context = persistentContainer.viewContext let request: NSFetchRequest<Day> = Day.fetchRequest() request.predicate = NSPredicate(format: "id == max(id)", argumentArray: []) var days:[Day] = [] do{ days = try context.fetch(request) as [Day] } catch{ print("getLastId error") } let day = days.first return (day?.id)! } static var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "DaysList") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \(error), \(error.userInfo)") } }) return container }() class func saveContext () { let context = persistentContainer.viewContext if context.hasChanges { do { try context.save() } catch { let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } } }
let resultId = DataHelper.addRecord("текстовая строка")
Памятка
Обычно файл базы данных лежит где-то здесь
/Users/<USER>/Library/Developer/CoreSimulator/Devices/<DEVICE_ID>/data/Containers/Data/Application/<APPLICATION_ID>/Documents/<FileName>.sqlite
массив уникальных знаений
25 апреля 2015, 1:19
создать массив заполненный случайными цифрами 0..10
var array:[Int] = [] for i in 1...20 { let randomValue:UInt32 = (arc4random_uniform(10)) array.append(Int(randomValue)) }
оставить уникальные элементы
вариант 1
let unique = Array(Set(array))
вариант 2
var unique = [Int]() for e in array { if !unique.contains(e){ unique.append(e) } }
Swift: Обработка ошибок
18 апреля 2015, 12:41
Уровень 1
enum ErrorsE: Error { case System case User case Background } class Handle { func save() throws { for i in 1...3 { if i == 2 { throw ErrorsE.User } } } } class AppHandle { func run(){ let e = Handle() do { try e.save() } catch let error { print("error: \(error)") } } }
AppHandle().run()