2016-04-07 4 views
0

Ich verwende die Cloudant DB und im CDTReplicatorDelegate, wenn ich die Beschreibung des Replikatorobjekts drucke, sehe ich, dass es eine eindeutige Replikationssitzungs-ID hat. Wie kann ich mit dem Objekt darauf zugreifen? Es gibt keine Eigenschaften dafür.Wie erhalten Sie die Replikations-ID von CDTReplicator Objekt mit Swift?

Beispielausgabe von replicator.description:

CDTReplicator push, source: establishment, target: https://ighterequallockneovessin:*****@*****.cloudant.com/establishment filter name: (null), filter parameters (null), unique replication session ID: 930C1002-B0B2-4576-BE84-C0BEFBD00834

I Replikator Objekte am Speichern (mehr als eine) in einem einzigen Delegierten und wenn die Replikation abgeschlossen ist, würde Ich mag seine Referenz entfernen. Deshalb brauche ich es.

func appendReplicator(replicator: CDTReplicator) { 
     replicators.append(replicator) 
} 

Irgendwelche Ideen?

Antwort

0

Ich verwende einen einzelnen Delegaten für mehrere Replikatoren. Ich habe nur zwei Replikatoren, also wenn ein Replikator startet, speichere ich einfach einen Verweis darauf in einem dieser zwei Variablen. Wenn es vollendet ist, vergleiche ich den Replikator, der in die replicatorDidComplete-Funktion übergeben wurde, mit diesen vars. Könntest du so etwas tun?

var replicators : [CDTReplicator] = [] 

// on start 
replicators.append(replicator) 

// on complete, error, etc 
func replicatorDidComplete(replicator: CDTReplicator!) { 
    var match: Int? = nil 
    for (index,r) in replicators.enumerate() { 
     if (r == replicator) { 
      match = index 
      break 
     } 
    } 
    if (match != nil) { 
     replicators.removeAtIndex(match!) 
    } 

würde ich das in eine removeReplicator Funktion bewegen, so dass Sie es von replicatorDidComplete nennen können, replicatorDidError usw.

+0

Einfach perfekt! Ich habe den Identitätsoperator '===' anstelle der Gleichheit verwendet. Aber im Wesentlichen das Gleiche. Vielen Dank. – oyalhi

0

Derzeit können Sie nicht. Es ist ein internes Detail, das ist absichtlich, das Beste, was zu tun ist, eine Feature-Anforderung auf github zu erhöhen, wenn Sie wirklich auf die Replikatorsitzungs-ID zugreifen möchten.

+0

Es ist kein Muss, aber würde ordentlicheres in meinem Fall gewesen. Jetzt werde ich separate Delegierte verwenden, um den Überblick zu behalten. – oyalhi