Video: Swift 5 - Insert / Delete Rows in UITableView (Xcode 10.3) 2024
I Swift anges de variabler som stöds uttryckligen om det behövs (vanligtvis i kod konverterad från mål-C). Dessutom behöver getters inte använda get-sökordet. Swift-egenskaper kan vara variabler eller konstanter; Varje typ kan antingen lagras eller beräknas enligt följande:
-
Deklarera en variabel egenskap: En variabel introduceras med sökordet var som i:
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Deklarera en konstant egenskap: En konstant (det vill säga en egenskap som inte kan ändras) introduceras med sökordsläget. Den tidigare deklarationen kan ändras för att deklarera en konstant enligt följande:
låt _fetchedResultsController: NSFetchedResultsController? = nil
-
Deklarera en lagrad egendom: Deklarationen av _fetchedResultsController som visas i följande lista är en typisk deklaration för en lagrad egendom . En lagrad egendom är en egenskap som lagras som en del av en förekomst av klassen, uppräkning eller struktur.
// MARK: - Fetched results controller var hentasResultsController: NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} låt fetchRequest = NSFetchRequest () // Redigera företagsnamn efter behov. låt enheten = NSEntityDescription. entityForName ("Event", inManagedObjectContext: self. managedObjectContext!) fetchRequest. entity = entity // Ställ in batchstorleken till ett lämpligt nummer. fetchRequest. fetchBatchSize = 20 // Ändra sorteringsnyckeln efter behov. låt sortDescriptor = NSSortDescriptor (nyckel: "timeStamp", stigande: false) låt sortDescriptors = [sortDescriptor] fetchRequest. sortDescriptors = [sortDescriptor] // Ändra namnsnyckelväg och cachenamn om det är lämpligt. // nil för sektionsnamn nyckelväg betyder "inga sektioner". låt aFetchedResultsController = NSFetchedResultsController (hämtaRequest: hämtaRequest, managedObjectContext: self. managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master") aFetchedResultsController. delegate = self _fetchedResultsController = aFetchedResultsController var fel: NSError? = noll om! _fetchedResultsController!. performFetch (& error) {// Byt ut denna implementering med kod för att hantera // felet på lämpligt sätt. // abort () orsakar att applikationen genererar en // kraschlogg och avslutar. Du bör inte använda denna // -funktionen i en fraktansökan, även om den kan vara användbar under utveckling. println ("Oövat fel (fel), (fel. userInfo)") avbryt ()} returnera _fetchedResultsController!} var _fetchedResultsController: NSFetchedResultsController?= nilBy default, variabeln som passerat till settern heter newValue,
och Swift använder lämplig typ för den.
Exemplet använder ett objektiv-C-mönster för en backningsvariabel: Swift-lagrade egenskaper behöver inte börja med ett specialtecken, t.ex. ett understreck; De måste dock initieras och ges en typ (kanske avled från initialiseringen) innan de används.
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Deklarera en beräknad egendom med en getter och en setter: Denna punkt förtjänar lite belysning. Listan visar en grundläggande getter och setter av en Swift-egenskap. Du kan se att myVar har en backiv variabel av myInt. I get-och set-nyckelorden identifieras getter och setter.
var minInt: Int = 0 var myVar: Int {get {return myInt} set {myInt = newValue}} myVar = 20
Så här skapar du en beräknad egendom .
Förutom getters och setters som visas i följande figur kan du använda observatörer som visas i nästa lista. Denna kod finns i DetailViewController. snabbfil av Locatapp (från mall för detaljerad detaljer).
var detailItem: AnyObject? {didSet {// Uppdatera vyn. själv. configureView ()}} Ange en brytpunkt i den här metoden och kör appen i iOS Simulator. Knappen gör att metoden kan ringas.
Det här är ett bra ställe att ringa en uppdateringsvy (vilket är exakt vad som görs i mallen). Det finns två observatörer som du kan använda:
-
didSet: Detta kallas efter faktum.
-
willSet: Detta kallas precis innan inställningen händer.