KLASSEN FÜR TABLEVIEW
Enums.swift

enum ChangeMode:Int {
     case EDIT
    case NEW
  //  case DELETE   mit yes-no Dialo
}



enum Continent:Int {        // Deklaration
  case  AFRICA=0, AMERICA, ASIA, AUSTRALIA, EUROPE, ANTARTKIS
}

let continente:[String] = ["Afrika","Amerika", "Asien", "Australien", "Europa", "Antartkis"]

func getContinentText(_ kontinent:Continent) -> String {
        switch (kontinent) {
         case Continent.AFRICA:
            return "Afrika"
            case Continent.AMERICA:
               return "Amerika"
            case Continent.ASIA:
               return "Asien"
            case Continent.AUSTRALIA:
               return "Australien"
        case Continent.EUROPE:
           return "Europa"
        case Continent.ANTARTKIS:
           return "Antartkis"
            default:
                   return "unbekannt"
        }
    }
    
func getContinent(_ kontinent:Int) -> Continent {
        switch (kontinent) {
         case 0:
            return Continent.AFRICA
            case 1:
               return Continent.AMERICA
        case 2:
            return  Continent.ASIA
        case 3:
               return Continent.AUSTRALIA
        case 4:
           return Continent.EUROPE
        case 5:
           return Continent.EUROPE
        default:
           return Continent.EUROPE
        }
    }

enum Visited : Int{        // Deklaration
  case  NONE=0, DOWN, AVERAGE, UP
}






City.swift
 class City: NSObject {
    var continent: Continent=Continent.AFRICA
    var name : String = ""
    var remark : String = ""
    var visited:Visited = Visited.NONE
    
    init(_ kontinent: Continent,_ name:String, _ remark:String, _ visited:Visited ){
        self.continent = kontinent
        self.name = name
        self.remark = remark
        self.visited = visited
    }
    
    public func initCity(_ city:City) {
        self.continent = city.continent
       self.name = city.name
       self.remark = city.remark
       self.visited = city.visited
    }
    
    public func saveDefault(_ defaults:UserDefaults, _ i:Int) {
        print("i: "+String(i)+"   name: "+name+"   remark: "+remark)
         defaults.set(continent.rawValue,forKey:"kontinent"+String(i))
         defaults.set(name,forKey:"name"+String(i))
         defaults.set(remark,forKey:"remark"+String(i))
        defaults.set(visited.rawValue,forKey:"visited"+String(i))
     }  // saveDefault
     
     public func loadDefault(_ defaults:UserDefaults, _ i:Int) {
        continent = Continent(rawValue: defaults.integer(forKey:"kontinent"+String(i))) ?? Continent.AFRICA
         name = defaults.string(forKey:"name"+String(i))!
         remark = defaults.string(forKey:"remark"+String(i))!
        visited = Visited(rawValue: defaults.integer(forKey:"visited"+String(i))) ?? Visited.NONE
     }  // loadDefault
     
    
}


Cities.swift

class CitiesDB: NSObject {

    
    public static func loadCitiesIntern()  -> Array {
        var cities=[City]()
        cities.append( City( Continent.AMERICA ,  "New York",  "Manhattan", Visited.NONE)  )
        cities.append( City( Continent.EUROPE , "Mailand", "Mailander Scala",  Visited.AVERAGE)  )
        cities.append( City( Continent.AUSTRALIA ,"Central Australien",   "Ayers Rock, Uluru",  Visited.NONE)  )
        cities.append( City( Continent.AMERICA ,"Peru",  "Machu Picchu",  Visited.UP)  )
        cities.append( City( Continent.EUROPE ,"Wernigerode",  "HS Harz",  Visited.DOWN)  )

        cities.append( City( Continent.AUSTRALIA ,"Queensland",  "The Great Barrier Reef",  Visited.NONE)  )
        cities.append( City( Continent.AMERICA ,"Rio de Janeiro", "Karneval",  Visited.DOWN)  )
        cities.append( City( Continent.EUROPE ,"Brüssel",   "Atomium",  Visited.UP)  )
        cities.append( City( Continent.AUSTRALIA ,"Sidney",  "Opernhaus",  Visited.UP)  )
        cities.append( City( Continent.AFRICA ,"Kairo",  "Pyramiden",  Visited.NONE)  )
        cities.append( City( Continent.AMERICA ,"Chile",  "Atacama Wüste",  Visited.UP)  )
        cities.append( City( Continent.ANTARTKIS ,"Antarktis",  "Antarktische Eisschild",  Visited.UP)  )

        cities.append( City( Continent.ASIA ,"Tokio",  "Shinjuku Gyoen National Garden",  Visited.DOWN)  )
        cities.append( City( Continent.EUROPE ,"Kiel",  "Kieler Woche",  Visited.UP)  )
        cities.append( City( Continent.AFRICA ,"Hunsbergen",  "Apollo 11 Höhle",  Visited.NONE)  )
        cities.append( City( Continent.EUROPE ,"Dresden",  "Das grüne Zimmer",  Visited.NONE)  )
        cities.append( City( Continent.AFRICA ,"Marrakesch",  "Botanische Garten Jardin Majorelle",  Visited.DOWN)  )
        cities.append( City( Continent.AMERICA ,"San Fransisco",  "Golden Gate Bridge",  Visited.UP)  )
        cities.append( City( Continent.EUROPE ,"Halberstadt",  "John Cage",  Visited.NONE)  )
        cities.append( City( Continent.ASIA ,"Peking",  "Verbotene City",  Visited.NONE)  )
        cities.append( City( Continent.EUROPE ,"Venezuela",  "Angel Falls",  Visited.UP)  )
        cities.append( City( Continent.AMERICA ,"Bilbao",  "Guggenheim-Museum",  Visited.UP) )
        cities.append( City( Continent.ASIA ,"Chiang Mai",  "Der weiße Tempel",  Visited.UP) )
        cities.append( City( Continent.AMERICA ,"Rio de Janeiro",  "Zuckerhut",  Visited.NONE) )
        return cities
    }
    
    public static func loadCities() -> Array {
        var staedte=[City]()
        let defaults = UserDefaults.standard
        let n = defaults.integer(forKey:"staedteCount")
        
        if n>0 {
            staedte = loadCitiesDBIntern()
        }
        else {
            staedte = loadCitiesIntern()
        }
        
        return staedte
    }  // loadStaedteDBIntern
    
    public static func loadCitiesDBIntern()  -> Array {
        var staedte=[City]()
        let defaults = UserDefaults.standard
        let n = defaults.integer(forKey:"staedteCount")
        
        if n>0 {
            for i in 0...n-1 {
                let City = City(Continent.AFRICA ,"", "", Visited.NONE)
                City.loadDefault(defaults, i)
                staedte.append(City)
            }
        }
        
        return staedte
    }  // loadStaedteDBIntern
    

    public static func saveStaedte(staedte: Array) {
        let defaults = UserDefaults.standard
        defaults.set(staedte.count,forKey:"staedteCount")
        var i:Int=0
        for City in staedte {
            City.saveDefault(defaults, i)
            i+=1
        }
    }  // saveStaedte
    
   
    
}




uiTableView
uiTableView mit Edit prepare