2014-02-13 8 views
5

Gibt es eine einfache Möglichkeit, alle Objekte innerhalb einer bestimmten Klasse (dh Nachrichten) zu löschen, die eine bestimmte Bedingung erfüllen, wie "UserID" = user, so dass alle Zeilen in meinem Nachrichtenklasse, die einem bestimmten Benutzer zugeordnet ist, wird gelöscht?Parse IOS alle Objekte löschen wherekey = objectID

+0

Sie müssen weiter ausarbeiten, ich habe keine Ahnung, wovon Sie sprechen. – random

+0

Welche spezielle Klasse verwenden Sie? Beispielcode hilft uns, Ihnen zu helfen. –

Antwort

14

die Sie interessieren,

PFQuery *query = [PFQuery queryWithClassName:@"messages"]; 
[query whereKey:@"UserID" equalTo:@"user"]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
if (!error) { 
    // The find succeeded. 
    NSLog(@"Successfully retrieved %d scores.", objects.count); 
    // Do something with the found objects 
    for (PFObject *object in objects) { 
     [object deleteInBackground]; 
    } 
} else { 
    // Log details of the failure 
    NSLog(@"Error: %@ %@", error, [error userInfo]); 
} 
}]; 

aktualisieren

ersetzen

for (PFObject *object in objects) { 
    [object deleteInBackground]; 
} 

mit

[PFObject deleteAllInBackground:objects]; 

dank mikewoz für th e aktualisieren.

+3

Gibt es eine effektivere Möglichkeit, dies zu tun, so dass Sie keine Abfrage starten müssen, um die Objekte zu finden? – Apollo

+0

dies scheint Abfrage intensive – Apollo

+0

Dies ist eine sehr gesuchte Funktionalität in der Gemeinschaft, aber Parse hat es noch zu implementieren. Die Lösung @Akhilrajtr bietet bei vielen Objekten eine recht hohe Bandbreitenintensität. Um dies zu erleichtern, könnten Sie eine Cloud-Code-Funktion erstellen, um all dies im Backend zu behandeln. – Moonwalkr

0

Dies half mir endlich herauszufinden, wie alle verwandten Zeigerobjekte eines gelöschten Objekts zu löschen, während Sie Parse und den lokalen Speicher verwenden.

Hoffe das spart jemand ein paar Stunden.

Parse.Cloud.afterDelete("Student", function(request) { 

    // after delete a student find the associated sessions and remove 
    var query = new Parse.Query("Session"); 

    var userPointer = { 
     __type: 'Pointer', 
     className: 'Student', 
     objectId: request.object.id 
    } 

    query.equalTo("studentOwner", userPointer); 

    query.find().then(function(studentSessions) { 
    return Parse.Object.destroyAll(studentSessions); 
    }).then(function(success) { 
    // The related sessions were deleted 
    }, function(error) { 
    console.error("Error deleting related sessions " + error.code + ": " + error.message); 
    }); 
}); 
Verwandte Themen