Video: TWEE SOORTEN OPVOEDING ... de Stad VS het Dorp | Quinsding 2024
In Swift worden achtergrondvariabelen expliciet aangegeven indien nodig (meestal in code omgezet van Objective-C). Ook hoeven getters het get-keyword niet te gebruiken. Swift-eigenschappen kunnen variabelen of constanten zijn; Elk type kan worden opgeslagen of berekend als volgt:
-
Een variabele-eigenschap declareren: Een variabele wordt geïntroduceerd met het sleutelwoord var als in:
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Een constante eigenschap declareren: Een constante (dat wil zeggen een eigenschap die niet kan worden gewijzigd) wordt geïntroduceerd met het sleutelwoord let. De vorige verklaring kan worden gewijzigd om een constante als volgt te declareren:
laat _fetchedResultsController: NSFetchedResultsController? = nil
-
Een opgeslagen eigenschap declareren: De declaratie van _fetchedResultsController in de volgende lijst is een typische verklaring van een opgeslagen eigenschap . Een opgeslagen eigenschap is een eigenschap die wordt opgeslagen als onderdeel van een instantie van de klasse, opsomming of structuur.
// MARK: - opgehaalde resultaten controller var fetchedResultsController: NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} laat fetchRequest = NSFetchRequest () // Bewerk de naam van de entiteit zoals aangewezen. laat entiteit = NSEntityDescription. entityForName ("Event", inManagedObjectContext: self. managedObjectContext!) fetchRequest. entity = entity // Stel de batchgrootte in op een geschikt nummer. fetchRequest. fetchBatchSize = 20 // Bewerk de sorteersleutel zoals van toepassing. laat sortDescriptor = NSSortDescriptor (key: "timeStamp", oplopend: false) laat sortDescriptors = [sortDescriptor] fetchRequest. sortDescriptors = [sortDescriptor] // Bewerk het pad van de sectienaam en, indien van toepassing, de cachenaam. // nihil voor sectienaam sleutelpad betekent "geen secties". laat aFetchedResultsController = NSFetchedResultsController (fetchRequest: fetchRequest, managedObjectContext: self. managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master") aFetchedResultsController. delegate = self _fetchedResultsController = aFetchedResultsController var error: NSError? = nul als! _fetchedResultsController!. performFetch (& error) {// Vervang deze implementatie door code om // de fout op de juiste manier af te handelen. // abort () zorgt ervoor dat de toepassing een // crashlogboek genereert en eindigt. Gebruik deze // -functie niet in een verzendapplicatie, hoewel het // nuttig kan zijn tijdens de ontwikkeling. println ("Niet-opgeloste fout (fout), (fout. userInfo)") abort ()} return _fetchedResultsController!} var _fetchedResultsController: NSFetchedResultsController?= nul Standaard heeft de variabele die in de setter is ingevoerd de naam newValue,
en Swift gebruikt het juiste type ervoor.
Het voorbeeld gebruikt een Objective-C-patroon voor een achtergrondvariabele: Swift opgeslagen eigenschappen hoeven niet te beginnen met een speciaal teken, zoals een onderstrepingsteken; ze moeten echter wel worden geïnitialiseerd en een type worden gegeven (misschien afgeleid uit de initialisatie) voordat ze worden gebruikt.
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Een berekende eigenschap met een getter en een setter declareren: Dit punt verdient een beetje toelichting. De lijst toont een standaard getter en zetter van een Swift-eigenschap. Je ziet dat myVar een achtergrondvariabele van myInt heeft. De get en set-sleutelwoorden identificeren de getter en de zetter.
var myInt: Int = 0 var myVar: Int {get {return myInt} set {myInt = newValue}} myVar = 20
Zo maakt u een berekende eigenschap .
Naast de getters en setters die in de volgende afbeelding worden getoond, kunt u waarnemers gebruiken zoals getoond in de volgende lijst. Deze code bevindt zich in de DetailViewController. snel bestand van Locatapp (uit de Master-Detail Applicatiesjabloon).
var detailItem: AnyObject? {didSet {// Update de weergave. zelf. configureView ()}} Stel een onderbrekingspunt in op deze methode en voer de app uit in iOS Simulator. De knop zorgt ervoor dat de methode wordt aangeroepen.
Dit is een goede plaats om een viewupdater aan te roepen (wat precies is wat er in de sjabloon wordt gedaan). Er zijn twee waarnemers die u kunt gebruiken:
-
didSet: dit wordt achter het feit genoemd.
-
willSet: dit wordt genoemd vlak voordat de instelling plaatsvindt.