valueForKey restituisce solo indirizzo di memoria e non in realtà il valore
-
21-09-2019 - |
Domanda
NSDictionary *topic = [spaces objectAtIndex:i];
NSInteger topicid = [topic valueForKey:@"TOPICID"];
Quando ho eseguito questo argomento e stampare ricevo il seguente:
Printing description of topic:
<CFDictionary 0xdb2a70 [0x30307a00]>{type = mutable, count = 2, capacity = 12, pairs = (
10 : <CFString 0xdb5300 [0x30307a00]>{contents = "TOPICID"} = 29
12 : <CFString 0xdb53a0 [0x30307a00]>{contents = "TOPICNAME"} = <CFString 0xdb5360 [0x30307a00]>{contents = "zzzzzzzz"}
)}
Tuttavia, quando guardo TopicId, il valore è sempre un indirizzo di memoria. Che cosa sto facendo di sbagliato?
Soluzione
Forse il valore è in realtà un NSNumber. Si potrebbe ottenere questo utilizzando:
NSInteger topicid = [[topic objectForKey:@"TOPICID"] intValue];
Altri suggerimenti
I dizionari possono contenere solo oggetti, non primitive. Tutto ciò che è memorizzato in là (come suggerito Xetius) è probabilmente avvolto in una qualche forma. Sembrerebbe che TopicId è un NSString.
Il risultato matrice, si può vedere TopicId è un valore stringa (NSString). Quindi, si vorrebbe impostare come descrive Xetius -. Ma non perché si tratta di un NSNumber, perché NSString ha un metodo "intValue"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow