2016-05-15 17 views
0

Also habe ich einen Chatroom gemacht und wenn jemand eine Nachricht sendet, fügen sie auch ein Abonnement in meine Cloud Kit-Datenbank hinzu, aber das Problem ist, dass es mehr als einen gleichen Namen gibt, der ein Abonnement ist und ich möchte, dass sie es einrichten können mehr Abonnements als eins. Hier ist ein Code:SWIFT: Muss ich jedes Mal einen Datensatz mit anderem Text anlegen?

func setupCloudKitSubscription() { 
    let userDefaults = NSUserDefaults.standardUserDefaults() 

    if userDefaults.boolForKey("subscribed") == false { 
     let predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil) 
     let subscription = CKSubscription(recordType: "Extra1", predicate: predicate, options: CKSubscriptionOptions.FiresOnRecordCreation) 

     let notificationInfo = CKNotificationInfo() 
     notificationInfo.alertLocalizationKey = "New Sweet" 
     notificationInfo.shouldBadge = true 

     subscription.notificationInfo = notificationInfo 

     let publicData = CKContainer.defaultContainer().publicCloudDatabase 

     publicData.saveSubscription(subscription) { (subscription:CKSubscription?, error:NSError?) -> Void in 
      if error != nil { 
       print(error?.localizedDescription) 
      }else{ 
       userDefaults.setBool(true, forKey: "subscribed") 
       userDefaults.synchronize() 

Sie sehen, wie er sagt, record: „Extra1“ Wie kann ich den „Extra1“ anderen Text ein Abonnement jedes Mal, wenn jemand macht gemacht? Vielen Dank!

+0

Bitte, nicht Bild des Codes, kopieren und fügen Sie den Code in Ihre Frage. Ich mag es nicht, all das neu zu tippen. –

+0

Tut mir leid, ich bearbeite es jetzt. –

+0

Ich habe es bearbeitet. Ich würde es wirklich schätzen, wenn Sie mir jetzt helfen können ... Vielen Dank! –

Antwort

0

Ihre Frage ist nicht ganz klar. Ich denke, was Sie fragen wollten, ist, dass das Abonnement Ihnen mit jeder Benachrichtigung eine andere Nachricht senden soll.

Sie können festlegen, dass ein oder mehrere Felder des Datensatzes angezeigt werden. Dazu sollten Sie etwas wie folgt verwenden:

Dann brauchen Sie auch dies in Ihrer Localization.Strings-Datei.

"Response: %[email protected]" = "Response: %[email protected]"; 
+0

Vielen Dank für Ihre Hilfe. Hier ist, was ich ein bisschen deutlicher machen möchte: –

+0

Ich möchte "Extra1" ändern, denn wenn ein neues Abonnement hinzugefügt wird, macht es eine Benachrichtigung, aber Sie können kein neues Abonnement mit dem gleichen Namen haben, also jedes Mal, wenn jemand ein neues Abonnement erstellt davon, dass es "Extra1" heißt, möchte ich, dass es jedes Mal anders heißt. –

+0

Extra1 ist nicht der Name Ihres Abonnements. Es ist der Name des Aufnahmetyps für deine Aufnahme. Sie verwenden ein echtes Prädikat. Sie können ein zweites Abonnement für den gleichen Datensatztyp erstellen, solange das Vergleichselement unterschiedlich ist. Andernfalls wird Ihnen mitgeteilt, dass bereits ein Abonnement besteht. Wenn Sie ein echtes Prädikat verwenden, erhalten Sie bereits alle Datensätze für den Datensatztyp Extra1. Sie benötigen kein anderes Abonnement. –