MutableArray mit einem MutableDictionary als Datasource

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MutableArray mit einem MutableDictionary als Datasource

    Hallo,

    ich habe ein MutableArray, welches ein MutableDictionary im Bauch hat. Das sieht so aus:

    <CFDictionary 0x3a92d0 [0xa01900e0]>{type = mutable, count = 3, capacity = 4, pairs = (
    1 : <CFString 0x3549e0 [0xa01900e0]>{contents = "Nahrungsmittel.Milchprodukte"} = <CFDictionary 0x3b3ed0 [0xa01900e0]>{type = immutable, count = 5, capacity = 5, pairs = (
    1 : <CFString 0x3ad500 [0xa01900e0]>{contents = "Nahrungsmittel.Fleischprodukte"} = <CFString 0x3a2aa0 [0xa01900e0]>{contents = "Reh"}
    2 : <CFString 0x3c79a0 [0xa01900e0]>{contents = "Nahrungsmittel.Süßwaren"} = <CFString 0x3c78d0 [0xa01900e0]>{contents = "Pralinen"}
    4 : <CFString 0x3a2a10 [0xa01900e0]>{contents = "Nahrungsmittel.Milchprodukte"} = <CFString 0x3ad4b0 [0xa01900e0]>{contents = "Käse"}
    5 : <CFString 0x382bc0 [0xa01900e0]>{contents = "Nahrungsmittel.Getränke"} = <CFString 0x382c40 [0xa01900e0]>{contents = "Schnaps"}
    10 : <CFString 0x3c78f0 [0xa01900e0]>{contents = "Nahrungsmittel.Backwaren"} = <CFString 0x38a310 [0xa01900e0]>{contents = "Brötchen"}
    )}
    2 : <CFString 0x38c620 [0xa01900e0]>{contents = "Nahrungsmittel.Backwaren"} = <CFDictionary 0x3840d0 [0xa01900e0]>{type = immutable, count = 5, capacity = 5, pairs = (
    1 : <CFString 0x37b7d0 [0xa01900e0]>{contents = "Nahrungsmittel.Fleischprodukte"} = <CFString 0x37b800 [0xa01900e0]>{contents = "Hirsch"}
    2 : <CFString 0x3883e0 [0xa01900e0]>{contents = "Nahrungsmittel.Süßwaren"} = <CFString 0x3885a0 [0xa01900e0]>{contents = "Lutscher"}
    4 : <CFString 0x395cd0 [0xa01900e0]>{contents = "Nahrungsmittel.Milchprodukte"} = <CFString 0x382c60 [0xa01900e0]>{contents = "Quark"}
    5 : <CFString 0x3b1e60 [0xa01900e0]>{contents = "Nahrungsmittel.Getränke"} = <CFString 0x30e110 [0xa01900e0]>{contents = "Bier"}
    10 : <CFString 0x3885c0 [0xa01900e0]>{contents = "Nahrungsmittel.Backwaren"} = <CFString 0x30e0d0 [0xa01900e0]>{contents = "Hörnchen"}
    )}
    3 : <CFString 0x3b0ad0 [0xa01900e0]>{contents = "Nahrungsmittel.Fleischprodukte"} = <CFDictionary 0x3b1840 [0xa01900e0]>{type = immutable, count = 5, capacity = 5, pairs = (
    1 : <CFString 0x3a9430 [0xa01900e0]>{contents = "Nahrungsmittel.Fleischprodukte"} = <CFString 0x3a94c0 [0xa01900e0]>{contents = "Kalb"}
    2 : <CFString 0x38afc0 [0xa01900e0]>{contents = "Nahrungsmittel.Süßwaren"} = <CFString 0x38af00 [0xa01900e0]>{contents = "Bonbons"}
    4 : <CFString 0x3568b0 [0xa01900e0]>{contents = "Nahrungsmittel.Milchprodukte"} = <CFString 0x356900 [0xa01900e0]>{contents = "Jogurt"}
    5 : <CFString 0x391e70 [0xa01900e0]>{contents = "Nahrungsmittel.Getränke"} = <CFString 0x38c050 [0xa01900e0]>{contents = "Brause"}
    10 : <CFString 0x38af20 [0xa01900e0]>{contents = "Nahrungsmittel.Backwaren"} = <CFString 0x38af90 [0xa01900e0]>{contents = "Brot"}
    [/CODE]
    Diese Daten will ich in einem TableView anzeigen lassen. Dies mache ich so:

    Quellcode

    1. return [[resultArray objectAtIndex:rowIndex] objectForKey:searchkey];

    Wobei searchkey der Name des Column identifiers ist.
    Leider kriege ich als Inhalt der Spalten immer nur:

    Quellcode

    1. {

    Woran kann das liegen?
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Original von kay
    Woran kann das liegen?


    Wenn ich das richtig überblicke, hast Du nicht ein Dictionary in einem Array, sondern Dictionaries in einerm Dictionary in einem Array.

    Kann es sein, daß Du eine Hierarchie verpaßt und statt des 'finalen' Objects lediglich eine description des übergeordneten Containers ausgiebst?

    t.
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • RE: MutableArray mit einem MutableDictionary als Datasource

    in der TableView Methode frage ich ja mit objectAtIndex:rowIndex das Array ab und nur der Zusatz objectForKey bezieht sich auf das array.

    resultArray beinhaltet das Dictionary:
    return [[resultArray objectAtIndex:rowIndex] objectForKey:searchkey];
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Anscheinend ist die Struktur des Arrays mit dem Dictionary nicht kompatibel mit dem rowIndex. Sobald der rowIndex 1 wird, kriege ich einen Fehler:

    Quellcode

    1. rowIndex: 1
    2. [NSCFArray objectAtIndex:]: index (1) beyond bounds (1)
    3. *** malloc[781]: Deallocation of a pointer not malloced: 0xbfffe480; This could be a double free(), or free() called with the middle of an allocated block; Try setting environment variable MallocHelp to see tools to help debug
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Hey, nicht so schreien. ;)

    Aber wo er Rcht hat, hat er Recht: Wo legst du denn bitte ein Array an? Wo ist in deinem Dump ein Array? Ich lese da nichts von einem Array.

    Du hast offenbar dich vergallopiert und irgendwo ein Array angelegt, welches nur ein Objekt enthält: Die gesamte Struktur, die du dumpst. Das ist nicht das, was du wolltest und Ursache des Fehlers. Du brauchst gar nicht erst irgendwo andere Fehler zu suchen, wenn du das nicht mal geklärt hast.

    Zeig doch mal deine Erzeugung!
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Was meinst du mit kompatibel?

    Ein Array ist ein Array, ein Dictionary ein Dictionary. Deshalb gibt es ja auch beide.
    macentwicklerwelt.net/index.php?title=Collections
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: MutableArray mit einem MutableDictionary als Datasource

    ok, gut, dass dus gefunden hast.
    liege ich richtig wenn ich davon ausgehe dass du QuickLite verwendest?
    Falls ja, dann sag mir doch bitte wie die geschwindigkeit bei dir ist.
    Bei mir war die mit dem warapper echt mieserabel. Ich verwende jetzt direkt die funktionen von sqlite und die sind mindestens 10 mal schneller (und auch etwas komplizierter...)

    Schönen tag noch!
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Ich nutze das QuickliteAPI 1.5 und bin auch noch recht frisch diesbezüglich. Es gibt auf der Webotech Homepage eine Performanceseite:

    webbotech.com/performance.html

    Das sind mal ein paar Werte aufgelistet. Da ich noch nicht mit solchen Datenmengen gearbeitet habe, kann ich leider nicht sagen wie schnell oder langsam das Zeugs funktioniert. Ich habe bis jetzt nichts negatives bemerkt.
  • RE: MutableArray mit einem MutableDictionary als Datasource

    Ja, ich kenne den geschwindigkeits-"Vergleich". Da wird aber net verglichen wie schnell/langsam der wrapper im gegensatz zu dem normalen sqlite ist. Ich weis auch warum die diesen vergleich schäuen.... Naja, wenn man nur wenig in die datenbank speichert/rausholt, dann kannst schon den wrapper verwenden, anders empfehle ich dir, dass du dich direkt mit sqlite beschäftigst (interessant ist da nur die datei sqlite3.h)

    Cu
  • diese coredata geschichte hat mir persönlich schon die tränen in die augen getrieben.
    wo man jetzt ein haufen code schreiben muss, kann man sich dann alles zusammen klicken
    ohne auch nur eine einzige zeile zu schreiben.
    das hat ein bisschen ähnlichkeit mit filemaker 7 bekommen.

    der einzige nachteil: es ist nicht mit 10.3 kompatibel *heul* X(
  • ja, coredata ist so gesehen richtig scheiße. Nee, mal ehrlich. Da macht man sich einen riesen Aufwand, um ein Tolles model zu coden und da kommt apple dumdidu daher und zeigt uns ne technologie mit denen wir uns viele 100 stunden und kopfschmerzen hätten sparen können. Genau das selber für 10.3 mit den Bindings. Das einzige Überlebensmittel ist da der Gedanke, dass man ja noch ältere Systeme unterstützen muss und deshlab die neuen Techniken nicht nutzen kann. ;)