Sök…


Syntax

  • @{ nyckelvärde, ... }

  • [NSDictionary dictionaryWithObjectsAndKeys: value, key, ..., nil];

  • dict [ nyckel ] = värde ;

  • id- värde = dict [ nyckel ];

Anmärkningar

Klassen NSDictionary förklarar det programmatiska gränssnittet till objekt som hanterar oföränderliga föreningar av nycklar och värden. Använd den här klassen eller dess underklass NSMutableDiction när du behöver ett bekvämt och effektivt sätt att hämta data associerade med en godtycklig nyckel. NSDictionary skapar statiska ordböcker och NSMutableDiction skapar dynamiska ordböcker. (För enkelhets skull avser termen ordbok någon instans av en av dessa klasser utan att ange det exakta klassmedlemskapet.)

Ett nyckelvärdespar i en ordlista kallas en post. Varje post består av ett objekt som representerar nyckeln och ett andra objekt som är den nyckelns värde. I en ordlista är nycklarna unika. Det vill säga, inga två nycklar i en enda ordbok är lika (som bestäms av isEqual :). I allmänhet kan en nyckel vara vilket som helst objekt (förutsatt att den överensstämmer med NSCopying-protokollet - se nedan), men observera att när nyckelvärdeskodning används måste nyckeln vara en sträng (se Grundläggande för nyckelvärdeskodning). Varken en nyckel eller ett värde kan vara noll; om du behöver representera ett nollvärde i en ordlista bör du använda NSNull.

NSDictionary är "avgiftsfri överbryggad" med sin motsvarande Core Foundation, CFDictionaryRef. Se avgiftsfri överbryggning för mer information om avgiftsfri överbryggning.

Skapa med bokstäver

NSDictionary *inventory = @{
    @"Mercedes-Benz SLK250" : @(13),
    @"BMW M3 Coupe" : @(self.BMWM3CoupeInventory.count),
    @"Last Updated" : @"Jul 21, 2016",
    @"Next Update"  : self.nextInventoryUpdateString
};

Skapa med ordbokWithObjectsAndKeys:

NSDictionary *inventory = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250",
    [NSNumber numberWithInt:22], @"Mercedes-Benz E350",
    [NSNumber numberWithInt:19], @"BMW M3 Coupe",
    [NSNumber numberWithInt:16], @"BMW X6",
    nil];

nil måste ges som den sista parametern som en sentinel som anger slutet.

Det är viktigt att komma ihåg att när man ordnar ordböcker på detta sätt går värdena först och tangenterna sedan. I exemplet ovan är strängarna tangenterna och siffrorna är värdena. Metodens namn återspeglar detta också: dictionaryWithObjectsAndKeys . Även om detta inte är felaktigt föredras det mer moderna sättet att ordna ordböcker (med bokstäver).

Skapa med hjälp av plister

NSString *pathToPlist = [[NSBundle mainBundle] pathForResource:@"plistName" 
    ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:pathToPlist];

Ställa in ett värde i NSDiction

Det finns flera sätt att ställa in en nyckelsobjekt i en NSDiction, motsvarande de sätt du får ett värde. Till exempel att lägga till en lamborghini till en lista över bilar

Standard

[cars setObject:lamborghini forKey:@"Lamborghini"];

Precis som alla andra objekt, anropa metoden för NSDiction som anger ett objekt för en nyckel, objectForKey: Var försiktig så att du inte förväxlar detta med setValue:forKey: det är för en helt annan sak, Key Value Coding

Stenografi

cars[@"Lamborghini"] = lamborghini;

Detta är syntaxen som du använder för ordböcker på de flesta andra språk, till exempel C #, Java och Javascript. Det är mycket bekvämare än standardsyntaxen och utan tvekan mer läsbar (särskilt om du kodar på dessa andra språk), men det är naturligtvis inte standard . Det finns också endast i nyare versioner av Objekt C

Få ett värde från NSDiction

Det finns flera sätt att få ett objekt från en NSDiction med en nyckel. Till exempel för att få en lamborghini från en lista över bilar

Standard

Car * lamborghini = [cars objectForKey:@"Lamborghini"];

Precis som alla andra objekt, ring metoden enligt NSDiction som ger dig ett objekt för en nyckel, objectForKey: Var försiktig så att du inte förväxlar detta med valueForKey: det är för en helt annan sak, Key Value Coding

Stenografi

Car * lamborghini = cars[@"Lamborghini"];

Detta är syntaxen som du använder för ordböcker på de flesta andra språk, till exempel C #, Java och Javascript. Det är mycket bekvämare än standardsyntaxen och utan tvekan mer läsbar (särskilt om du kodar på dessa andra språk), men det är naturligtvis inte standard . Det finns också endast i nyare versioner av Objekt C

Kontrollera om NSDiction redan har en nyckel eller inte

Mål c:

   //this is the dictionary you start with. 
 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name1", @"Sam",@"name2", @"Sanju",nil];

//check if the dictionary contains the key you are going to modify.  In this example, @"Sam"
if (dict[@"name1"] != nil) {
    //there is an entry for Key name1       
}
else {
    //There is no entry for name1       
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow