Domanda

Sono po 'indietro nella conoscenza su questi tre temi: NSMutableDictionary, NSEnumerator, NSMutableSet. Quando voglio usarli, ci si sente molto duro, anche quando ho passato attraverso la documentazione per gli sviluppatori.

Esiste un codice di esempio per capire chiaramente per tutti e tre gli argomenti?

Si prega di aiutare me.

Grazie, Madan Mohan.

È stato utile?

Soluzione

Il modo migliore per capire questi dipende da ciò che la vostra esperienza precedente è. NSDictionary è esattamente quello che sembra: un dizionario. Ciò significa che data una chiave (o un lemma , come in un dizionario), è possibile cercare un valore (o definizione ):

Per esempio, questo dizionario fornisce informazioni circa il mio cane:

KEY        VALUE
-------------------------------------------
@"name"       @"tucker"
@"species"    @"canis lupus familiaris"
@"favorite"   @"biscuits"

Con un dogInfo dizionario contenente tali informazioni, potremmo trasmettere [dogInfo objectForKey:@"name"] e si aspettano di ricevere @"tucker".

La differenza tra NSDictionary e NSMutableDictionary è che quest'ultimo permette modifiche dopo l'inizializzazione. Questo ti permette di fare le cose come [dogInfo setObject:@"fetch" forKey:@"game"]. Questo è utile per mantenere lo stato, memoizing richieste referenzialmente trasparenti, ecc.

NSSet è un modo di avere un gruppo di oggetti, con alcuni bit importanti: non esiste un ordine definito a quegli oggetti, e non ci può essere solo uno di ciascun oggetto (duplicati). Utilizzare NSSet per quando si ha bisogno di contenere unici, oggetti non ordinate. NSMutableSet è la variante di NSSet che consente cambi (come l'aggiunta o la rimozione di oggetti) dopo l'inizializzazione.

NSEnumerator è un po 'più complicato, ma di solito non avrà bisogno di trattare con esso a meno che non si sta scrivendo le proprie librerie, esegue la codifica arcaico, o sta facendo enumerazioni complesse. Sottoclassi di NSEnumerator sono utilizzati da classi collezione, come NSDictionary, NSArray e NSSet, per consentire il loro oggetto essere enumerati. Di solito, si era appena enumerare su di loro con un foreach-ciclo, dal momento che tutti implementano <NSFastEnumeration>. Ma a volte, ti consigliamo di fare le cose più specifiche, come enumerate nel corso degli oggetti (invece dei tasti) di un dizionario, o enumerare su un array in senso inverso. Questo è dove le istanze di NSEnumerator (di solito definita come proprietà sui vostri oggetti da collezione) diventerà disponibile.

Aggiorna

Justin nei commenti ha sottolineato che si conforma a NSEnumerator <NSFastEnumeration>; che i mezzi, le probabilità sono vicino-a-nulla che avrete bisogno di sapere come utilizzare un NSEnumerator; si può solo fare un ciclo foreach sopra l'enumeratore in sé, in questo modo:

for (id object in [dogDict objectEnumerator]) {
  // doing something with the object, disregarding its key
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top