2009-06-27 6 views
1

ich bisher drei Einheiten in meiner Anwendung haben: tag, Futtermittel- und GeschichteKerndaten, NSArrayContainer Arrayinhalt vieler Arrays

Ein Tag hat bekam eine n-Beziehung zu Feeds und Feeds hat eine to- bekam viele Beziehung zur Geschichte.

Ich habe einen NSArrayController für jede Entität, einen benannten Tags, einen Namen Feeds und einen Namen Geschichten. Sie alle teilen den gleichen "managedObjectContext", den sie vom Eigentümer der Datei erhalten. Der Inhaltssatz der angegebenen AC-Feeds ist an den Schlüssel 'Tags' gebunden: Auswahl, Schlüsselpfad: Feeds

Ich möchte, dass der Content-Set des dritten Arrays an alle Storys in allen Feeds gebunden wird im ausgewählten Tag: Ich habe versucht, den Schlüsselpfad zu verwenden: "@ unionOfArrays.stories" aber konnte es nicht zum Funktionieren bringen.

Irgendeine Idee, wie ich darüber gehen würde?

Antwort

2

Zunächst einmal gibt es in Ihrer Frage eine Sache, die mit immer etwas Arbeits inkonsistent ist:

Sie alle teilen die gleiche ‚managedObjectContext‘, die sie aus der Datei Eigentümer erhalten

Als ich das in IB eingerichtet habe, hat es einfach nicht funktioniert. Sie meinen sicher, dass Sie den managedObjectContext an den des App-Delegaten gebunden haben.

Angenommen, Sie möchten alle Storys im ausgewählten Tag sehen, hier sind ein paar Fehler, die Sie möglicherweise in Ihrem Setup gemacht haben.

1. Überprüfen Inverse Beziehungen

Für alle Beziehungen, die Sie erwähnen, müssen Sie für jede Beziehung der inversen einzustellen.

Für die eine zu viele Tags -> Feeds Beziehung, hätten Sie eine zu viele Beziehung in den Tags Elemente namens "Feeds", die Sie beschrieben haben.

Sie hätten auch eine Beziehung in der Feed-Entität namens "tag". Sie würden die inverse Beziehung wählen als Wesen, wie unten gezeigt Feeds:

Single Feed Relationship http://img20.imageshack.us/img20/2557/tagsinglefeedrelationsh.jpg

2. Link Up Stories

Sie erwähnen nicht, wie Sie alle Ihre Geschichten erstellt haben.Angenommen, Sie sind nichts im Code zu tun, würde ich 4 Array-Controller haben:

  1. Stichworte
  2. Feeds in ausgewählten Tag
  3. Geschichten in ausgewählten Feed
  4. Alle Geschichten in ausgewählten Tag

Wenn Sie nur einen Stories Array Controller haben, dessen Content Set an nichts gebunden ist, erstellen Sie Geschichten effektiv in einem Vakuum - sie werden nicht mit Feeds oder Tags verknüpft, weshalb Sie Erhalte diese Fehler.

3. Setup "Geschichten in Selected Tag" Regler

Sie müssen den Inhalt Array setzen, nicht den Inhalt Set.

Binden Sie das Content Array an den Controller "Feeds in Selected Tag".

  • Key: arrangedObjects
  • Key Path: @ unionOfArrays.stories

Dieser sendet die Key Path Geschichten zu jedem Objekt in der "Feeds in ausgewählten Tag"-Controller, so dass alle Geschichten immer in alle Feeds im ausgewählten Tag.

4. Rock'n'Roll!

Wir sind fertig. Wenn Sie wirklich Schwierigkeiten haben, dieses Setup einzurichten, lassen Sie es mich wissen, und ich kann den Link zu der XIB-Datei veröffentlichen, die ich erstellt habe.

+0

Yay, habe es jetzt funktioniert. Vielen Dank :) –

+0

Jetzt, da Sie es funktioniert haben, können Sie bitte meine Antwort upvote und/oder akzeptieren Sie es? Vielen Dank. –

+0

Es tut mir leid, aber ich darf Ihnen nicht +1 geben, weil ich anscheinend nicht genug Reputation habe –

0

Sie können versuchen @distinctUnionOfSets.stories. Alle Core Data 1-n Beziehungen sind als Sets implementiert.

+0

Danke, dass Sie sich die Zeit genommen haben, mir zu helfen :) Wenn ich den ContentSet meiner AC steuernden Story-Entities an den Controller-Schlüssel 'arrangedObjects' und den Schlüsselpfad '@ distinctUnionOfSets.stories' anschließe, sagt mir der Compiler, dass ich das contentArray verwenden soll Ich binde es an den contentArray es heißt " [entity: feed, Anzahl der ausgewählten Objekte: 1] (vom gebundenen Objekt [entity: story, Anzahl der ausgewählten Objekte: 0] (null)): [<_NSControllerArrayProxy 0x17cde0> valueForUndefinedKey:]: Diese Klasse ist für den Schlüssel distinctUnionOfSets nicht schlüsselcodefähig. " –