J'essaye de créer un NSDictionary
avec la méthode dictionaryWithDictionary
. Cependant, mon premier NSDictionary
A peut avoir des clés avec des valeurs vides. Comment puis-je créer B qui n'a pas de clés avec des valeurs vides? Je fais tout cela dans le but de remplir un UITableView
avec des lignes qui correspondent à chaque clé non-vide dans le NSDictionary
.Copier un NSDictionary sans valeurs vides?
Répondre
Que diriez-vous quelque chose comme ceci:
NSMutableDictionary *destDictionary = [NSMutableDictionary dictionaryWithCapacity:[sourceDictionary count]];
NSEnumerator *keyEnumerator = [[sourceDictionary allKeys] objectEnumerator];
id key;
while (key = [keyEnumerator nextObject])
{
NSString *object = [sourceDictionary objectForKey:key];
if ([object length] == 0)
continue;
[destDictionary setObject:object forKey:key];
}
Qu'est-ce qui entrerait dans! Value? –
Oups. 'object' a commencé comme 'value' dans mon exemple de code - et j'ai négligé de changer tout 'value' en 'object'. Échantillon maintenant fixé. Vous pourriez dire (object == nil) au lieu de (! Object), si vous préférez. – westsider
Excellent exemple! Malheureusement, ça ne marche pas vraiment. Je suppose que l'objet existe tant que la clé existe, même si les valeurs sont toutes envoyées à vide (""). Je ne suis pas sûr de savoir comment contourner cela. –
Vous pouvez également utiliser un test de bloc, de filtrer les clés dont les valeurs ont une longueur et créer votre nouveau dictionnaire de cela.
NSSet *keySet = [dictionary keysOfEntriesPassingTest:
^(id key, id obj, BOOL *stop) {
return (BOOL)[obj length];
}];
NSArray *keys = [keySet allObjects];
NSArray *nonEmptyObjects = [dictionary objectsForKeys:keys notFoundMarker:@""];
NSDictionary *newDict = [NSDictionary dictionaryWithObjects:nonEmptyObjects
forKeys:keys];
- 1. iOS NSDictionary Copier la fuite de mémoire
- 2. WPF Ivalueconverter valeurs vides
- 3. Traitement des valeurs 'vides'
- 4. array_combine valeurs vides
- 5. Zend_Filter_Input et les valeurs vides
- 6. Obtenir toutes les valeurs de NSDictionary (profondément)
- 7. Afficher les valeurs NSArray stockées dans un NSDictionary
- 8. valeurs clés d'un formatage NSDictionary avec "()"
- 9. Comparaison de valeurs NSDictionary Objective-C
- 10. L'insertion Gridview d'ObjectDataSource échoue au dictionnaire Valeurs vides/vides
- 11. iPhone - l'accès à un NSDictionary
- 12. Lit les valeurs vides comme vides et non comme valeurs par défaut
- 13. Quel est le meilleur moyen de copier un tableau et de garder les clés avec des valeurs vides
- 14. NSDictionary dans un NSInputStream
- 15. ssis dates vides comme valeurs nulles
- 16. analyse XML me donne des valeurs vides
- 17. MySQL, coalesce équivalent pour les valeurs vides?
- 18. VBA: Copier coller sans presse-papier
- 19. Copier ResultSet sans utiliser CachedRowSetImpl.execute()
- 20. Prise d'objet sans propriétés vides dans Linq
- 21. Les clés et les valeurs d'un NSDictionary sont-elles classées?
- 22. comment récupérer des valeurs de nsdictionary dans iphone?
- 23. Comment regedit.exe crée-t-il des valeurs binaires vides
- 24. Tableau croisé dynamique Les valeurs sont maintenant vides
- 25. Insérer NSArray dans un NSDictionary
- 26. Copier des valeurs d'un dictionnaire dans un objet en Python
- 27. WCF DataContract problème de désérialisation avec des valeurs vides
- 28. Correct façon d'instancier NSDictionary/NSArray dans init sans retenues supplémentaires
- 29. NSDictionary dans 1 NSMutableArray
- 30. sharpziplib - pouvez-vous ajouter un fichier sans le copier d'abord?
Qu'est-ce qu'une "valeur vide" dans ce cas? NSDictionary n'autorise pas les valeurs 'nil'. –
Une clé avec une variable vide. –
Cela n'aide toujours pas, les valeurs d'un dictionnaire peuvent être n'importe quoi, NSString, NSNumber, même vos propres classes personnalisées. Si un dictionnaire ne contient pas de valeur pour une clé particulière, alors 'objectForKey:' renvoie 'nil'. Si vos valeurs sont des chaînes de longueur nulle ou des valeurs '[NSNull null]', alors faites le nous savoir. Il n'y a pas vraiment de "variable vide" dans Cocoa. – dreamlax