Core data fetch Datensätze Gruppe von Beziehung?

Core data fetch Datensätze Gruppe von Beziehung?Ich habe zwei Entitäten benannt Expenses und ExpensesCategory die Expenses hat eine Beziehung mit CategoryExpenses mit folgenden Attributen
name-expenseCategory, Ziel - ExpensesCategory, inverse - Kosten.
die ExpensesCategory hat ein Attribut mit dem Namen expenseCategory der string-Typ und Expenses hat ein Attribut namens Betrag.
Jetzt will ich fetch Ausgaben Gruppiert nach expenseCategory mit der Summe auf dem Betrag.
hier ist mein code

NSSortDescriptor *sortTitle =[NSSortDescriptor sortDescriptorWithKey:@"addedTimestamp"
                                                               ascending:YES];
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortTitle, nil];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Expense"
                                              inManagedObjectContext:context];

    NSPredicate *predicate;
    predicate =[NSPredicate predicateWithFormat:@"(addedTimestamp <= %@) AND (addedTimestamp >= %@)",currentDate, endDate];
        NSAttributeDescription* amtDescription = [entity.attributesByName objectForKey:@"amount"];
        NSRelationshipDescription* nameDesc = [entity.relationshipsByName objectForKey:@"expenseCategory"];

        NSExpression *keyPathExpression = [NSExpression expressionForKeyPath: @"amount"];
        NSExpression *countExpression = [NSExpression expressionForFunction: @"sum:"
                                                                  arguments: [NSArray arrayWithObject:keyPathExpression]];
        NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
        [expressionDescription setName: @"Sum"];
        [expressionDescription setExpression: countExpression];
        [expressionDescription setExpressionResultType: NSDecimalAttributeType];

        [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:amtDescription, expressionDescription, nameDesc, nil]];
        [fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObject:nameDesc]];
        [fetchRequest setResultType:NSDictionaryResultType];

        [fetchRequest setEntity:entity];
        [fetchRequest setPredicate:predicate];
        [fetchRequest setSortDescriptors:sortDescriptors];
    [context executeFetchRequest:fetchRequest error:&error];

Aber wenn ich laufen, ich habe Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attribute/relationship description names passed to setPropertiesToFetch: must match name on fetch entity

Jede mögliche Hilfe würde geschätzt.

  • Ich bin immer noch vor dem gleichen problem .. ich brauche wirklich Eure Hilfe Jungs.
  • Wenn Sie post einen screenshot vom Xcode-Modell-editor zeigt das Objektdiagramm, das wäre hilfreich. Klicken Sie auf "Stil Bearbeiten" am unteren Rand des Editors. Beispiel: techotopia.com/images/d/dc/Xcode_4.2_core_data_relationship.jpg
  • Screenshot Hinzugefügt, in der Frage, bitte haben Sie einen Blick.
  • setPropertiesToFetch kann nur property-Namen (strings) oder Eigenschaftsbeschreibungen, die gehören zu den Kosten. Sollte nicht die "Kosten" - Verhältnis von ExpenseCategory ein zu-viele-angesichts dessen, was Sie sind versuchen zu tun? Ich würde davon ausgehen, eine Kategorie kann viele (Kosten) Mitglieder, während die Kosten kann eine (oder mehr) Kategorien.
  • Ja du hast Recht, eine Kategorie kann viele Kosten und Aufwand kann nur an einer Kategorie, eigentlich bin ich die Arbeit an einem vorhandenen Projekt-und core-Daten wurde von einigen anderen.Besser, wenn Sie könnten, posten Sie Ihre Antwort darunter, was falsch ist in core data und code.
  • Habe meine Antwort für Sie arbeiten? Markieren Sie bitte meine Antwort als korrekt.

InformationsquelleAutor Bharat | 2014-07-25
Schreibe einen Kommentar