Ich habe ein NSDictionary, namens "thisList", und ich muss den Wert seines Schlüssels "list_collection" erhalten.Kann nicht Wert von NSSingleEntryDictionary
Xcode zeigt an, dass der Wert ein "NSSingleEntryDictionary" ist.
Der Wert selbst enthält ein Array mit einem weiteren Wörterbuch.
Bitte nehmen Sie sich einen Blick auf den Screenshot:
Nun, egal, was ich versuche (ObjectForKey/ValueForKey) oder was auch immer Art von Objekt I Initialize (NSArray/NSMutableArray/NSDictionary/NSMutableDictionary) I am Ende mit ein Nullwert.
Offenbar vermisse ich einige wesentliche Kenntnisse darüber, wie man damit umgeht.
Meine Frage: Wie initialisiere ich ein Objekt mit dem Wert des Schlüssels "list_collection". Hier
ist eine (teilweise) Dump des json:
Printing description of thisList:
{
archived = 0;
"chapter_part" = "";
"chapter_title" = "";
comment = "";
"cover_id" = "<null>";
"created_at" = "2017-01-06T12:59:04.000+01:00";
"date_created" = "06 January 2017";
deleted = 0;
id = 141384502;
isMyList = 1;
keywords = (
);
"list_collection" = {
lists = (
{
"speech_locale" = EN;
subject = engels;
words = (
{
word = attitude;
},
Die mir logischste Ansatz wäre:
NSDictionary * myDic = [thisList objectForKey:@"list_collection"];
Anmerkung: Ich habe nicht explizit 'myDic' initialisieren hier .
Um die Dinge in Zusammenhang zu bringen, hier ist mein Code:
NSString * hlists = [json objectForKey:@"lists"];
NSData* data = [hlists dataUsingEncoding:NSUTF8StringEncoding];
NSArray *wrtsLists = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonParsingError];
Lists = [[NSMutableArray alloc]init];
for (NSDictionary *thisList in wrtsLists){
WordList* theList = [[WordList alloc]init];
theList.title = [thisList valueForKey:@"title"];
[Lists addObject:theList];
NSDictionary *myDic = thisList[@"list_collection"];
>>>>this is where I put a breakpoint. myDic is nil here
}
Vielen Dank für Ihre Einsichten.
Können Sie Code und JSON-Daten veröffentlichen? damit wir Ihnen in Ihrem Problem helfen können. – CodeChanger
Es spielt keine Rolle, für welchen Objekttyp Sie Ihre Variable deklarieren, es wird nicht "Null" sein, wenn der Schlüssel korrekt ist. Ein Typ-Mismatch kann (wird) später zu einem Absturz führen, aber es wird nicht zum Wert nil. Versuchen Sie, die Konsole zu verwenden und geben Sie "po ThisList.allKeys" ein und sehen Sie, ob Sie den Schlüssel richtig buchstabieren – GreatWiz
Gemäß dem Screenshot soll Ihr * logischster Ansatz * funktionieren. Allerdings würde ich Schlüsselabonnements wie 'thisList [@" list_collection "] bevorzugen' – vadian