Swift 4 – Substring!

let stripped = "FREMP my string" // my string
let indexOf = stripped.index(stripped.startIndex,offsetBy:5)
let sub = stripped[..<indexOf] //left cut -> output: "my string"
print("sub")

//sub is of type substring - to make it a string again just type:
let stringAgain = String(sub)

Swift 4 – Array Contains Value

Easiest way:

let’s say you have an array

let check = c.sections.contains { $0.idaudits_sections == needle }

// check returns true if a match is found. $0 is the iterator, trough this abstract object it is possible to access the objects content

Swift 4 – Add Action Menu to TableviewController

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?
    {
        let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Löschen" , handler: { (action:UITableViewRowAction, indexPath: IndexPath) -> Void in
            let deleteMenu = UIAlertController(title: nil, message: "Wirklich Löschen?", preferredStyle: .actionSheet)
            let deleteAction = UIAlertAction(title: "Ja", style: UIAlertActionStyle.default) { _ in // crazy closure!
                self.audits.remove(at: indexPath.item)
                Storage.store(self.audits, to: .documents, as: "runningAudit.json") // store audit
                tableView.reloadData()
            }
            let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil)
            deleteMenu.addAction(deleteAction)
            deleteMenu.addAction(cancelAction)
            self.present(deleteMenu, animated: true, completion: nil)
        })
        return [deleteAction]
    }