Core Data – Inserimento, Recupero e Query di ricerca

Giuseppe Sapienza

Core Data – Inserimento, Recupero e Query di ricerca

Core Data in Swift
Per favore acquista corso prima di iniziare la lezione.

Compatibile con Xcode

Hai un problema con la lezione? scrivi un commento in fondo alla pagina - non mordo!

Il Core Data non è un Database. Un Database è un archivio di dati organizzato in strutture e salvato localmente. É costruito per fornire la massima velocità di recupero e scrittura delle informazioni all'interno di questo archivio. Un database lo puoi immaginare come un enorme archivio dove le informazioni vengono conservate in degli appositi cassetti. A [...]

Lista Lezioni

Corso creare applicazioni per iOS con il linguaggio Swift

Torna a: Corso creare applicazioni per iOS con il linguaggio Swift > Salvare dati in Memoria
  • Marco Piazza

    OTTIMO!!!!!
    Con questo capitolo Siamo quasi guerrieri iOS!!!!

  • nickbonny

    Ciao beppe,
    volevo chiederti qualche informazione sulle extention..cioè quando e come si usano?
    Te lo chiedo perché dopo questa lezione le ho trovate anche in un codice che stavo guardando su stackoverflow

    • Ciao nick,

      Nella lezione del corso gratuito ho spiegato come e quando utilizzarle. Offrono un livello d’astrazione maggiore e permettono di creare codice più flessibile e leggero. Infatti si comincia a parlare di programmazione Protocol Oriented e non più Object Orientend (appena mi libero di alcuni esami, accelero con degli articoli nuovi).
      Giuseppe Sapienza
      xCoding.it | Sviluppa, Crea e codifica i tuoi sogni!

      • nickbonny

        Grazie ho letto la lezione del corso gratuito, adesso tutto chiaro!

  • Salve. Ma con l’ultimo aggiornamento è cambiato qualcosa nell’implementazione dell’nsmenagedobject?
    Mi da differenti voci dopo la creazione

    • Ciao Angelo,
      Che intendi dire? Perché ho creato un progetto da 0 con xcode 7.3 e tutto mi sembra uguale.

      • Trovato è risolto. Nell’ultimo passaggio bisognava selezionare swift invece do Obj-c

        • Perfetto Angelo!!
          Per qualsiasi altro dubbio non esitare a contattarmi ;)

  • nickbonny

    Ciao beppe! Ma se volessi ricercare nel coreData un elemento in base a 2 criteri, cioè per esempio prima il nome e poi il cognome, come dovrei fare?
    Perché ho visto che facendo così:

    request.predicate = NSPredicate(“nome = @%”, nome)
    request.predicate = NSPredicate(“cognome = @%”, cognome)

    mi prende solo l’ultima delle 2…

    Spero di essermi spiegato XD

    • nickbonny

      Niente scusa ho già risolto mettendo un argumentArray =)

      • Perfetto Nick,
        Se vuoi postare il codice completo fai un favore anche agli altri partecipanti.

    • nickbonny

      Per poter aggiungere due criteri di ricerca nel request.predicate ho fatto:

      private func cercaCategoria(nome: String, tipologia: String) -> Categoria? {
      let request = NSFetchRequest(entityName: “Categoria”)

      request.predicate = NSPredicate(format: “nome = %@ AND tipologia = %@”, argumentArray: [nome, tipologia])

      request.returnsObjectsAsFaults = false

      poi continuo normalmente con il blocco do try catch come nella lezione sopra…

      • Grazie Nick ;)

        Giuseppe Sapienza
        xCoding.it | Sviluppa, Crea e codifica i tuoi sogni!

  • pagano.emanuele

    Salve, è possibile aver il codice dell’esempio?
    Grazie

  • korner

    Ciao Peppe,
    cosa si intende esattamente per “istanza della tua applicazione”?
    Me lo puoi spiegare in parole ancor più povere per favore?
    grazie

    • Ciao Korner,
      Istanza dovrebbe essere un nome non nuovo. Infatti si parla di istanza quando si crea un oggetto partendo da una classe.

      class MiaClasse { }

      var mioOggetto = MiaClasse() // Questa è un’istanza della classe MiaClasse

      Cioè l’istanza è la rappresentazione reale, cioè l’oggetto, della classe in questione.

      Nel caso dell’applicazione, anche questa è, in realtà, un insieme di classi (AppDelegate ecc ecc) quindi, quando dico: “recupera l’istanza della classe” intendo riferirmi all’oggetto che rappresenta l’applicazione.

      In caso ci fossero problemi, non esitare a scrivere.
      Alla prossima e buona programmazione

      • korner

        si, il termine “istanza” mi è chiaro. L’applicarlo all’applicazione (che gioco di parole orrendo che mi è venuto) invece mi sfugge. In pratica recuperi l’oggetto che rappresenta lo stato dell’applicazione in quel momento, che poi è l’applicazione stessa, è poi puoi operare su di essa con i vari metodi, proprietà, ecc..?
        grazie sempre per la tua enorme disponibilità

        • Esattamente!! L’applicazione non è altro che un’istanza.
          Nella realtà, non ho voluto trattare l’argomento perché richiederebbe la conoscenza dei sistemi operativi, un processo è l’esecuzione di un’applicazione. Cioè la trasposizione in memoria RAM del codice scritto nel programma.

          Qui viene in aiuto la programmazione ad oggetti che fa in modo che quel processo venga considerato come un oggetto (anche se sarebbe meglio dire un insieme d’oggetti).

          Per qualsiasi dubbio, non esitare a scrivere.
          Alla prossima e buona programmazione ;)

  • laopini

    Ciao Peppe, buongiorno!

    Scusa se ti scoccio ma ho appena iniziato a guardare il CoreData, solo che appena creo la NSManagedObject Subclass dall’editor, xcode inizia a segnalarmi una serie di errori che non mi riesce risolvere…..ho provato e riprovato ma niente…..che cappero sbaglio???

    Paolo

  • laopini

    risolto Peppe…ho cercato in rete ed ho trovato questa soluzione: cambiando i settaggi sul Data Model Inspector funziona! https://uploads.disquscdn.com/images/1872335afc63e8e9b97500ec44e786d0aac33d19f2b7168f39415ae74c337429.png

  • Marcello Ruta

    Posto la soluzione all’Esercizio 0 relativo al caso che il libro non esistesse. Ha ragione il buon maestro @giuseppe_sapienza:disqus l’opzionalità è salvifica…

    ecco lo snippet del mio codice, naturalmente modificate con le vostre variabili, le mie non sono identiche a quelle dell’esercizio di Giuseppe.

    Ecco il code:
    func loadBookFromName(nome: String) -> Libro? {

    let request: NSFetchRequest = NSFetchRequest(entityName: “Libro”)
    request.returnsObjectsAsFaults = false

    let predicate = NSPredicate(format: “nome = %@”, nome)
    request.predicate = predicate

    let book = self.loadBooksFromFetchRequest(request: request)

    if !book.isEmpty {
    return book[0]
    } else {
    print(“Non ci sono libri con il nome cercato: (nome)”)
    return nil
    }

    }

    come vedete il valore di ritorno della funzione, cioè Libro è opzionale cioè Libro? il resto del lavoro io l’ho fatto con if else e quando l’array è vuoto ritoniamo un NIL.

    spero di essere stato utile!
    Naturalmente questa è la mia soluzione.

Start typing and press Enter to search