2016-07-19 13 views
0

私は既存のサブスクリプションの述語を、彼が作成しようとしているサブスクリプションと比較しようとしています。同じサブスクリプションを2回作成しないようにするだけです。Cloudkitのサブスクリプションを比較してください

しかし、私のif subscription.predicate! == predicate always戻りfalse

マイ述語:

var predicate = NSPredicate() 
predicate = NSPredicate(format:"validUserIDs CONTAINS %@ AND expiryDate > %@ AND NOT(invalidUserIDs CONTAINS %@)", userCloudID!, dateNow, userCloudID!) 

マイフェッチsubscrition方法

publicDatabase.fetchAllSubscriptionsWithCompletionHandler { (subscriptions: [CKSubscription]?, error: NSError?) in 
     if error != nil 
     { 
      print("-> cloudKitSubscribeToChat - fetch subscription error") 
     } 
     else 
     { 
      print("-> cloudKitSubscribeToChat - fetch subscription no error") 
      if subscriptions?.count == 0 
      { 
       print("-> cloudKitSubscribeToChat - subscription count = 0, create") 
       subscribe() 
      } 
      else 
      { 
       print("-> cloudKitSubscribeToChat - subscription count > 0, create") 
       var exists = false 
       for subscription in subscriptions! 
       { 
        if subscription.predicate == predicate 
        { 
         print("-> cloudKitSubscribeToChat - subscription count > 0, true") 
         exists = true 
        } 
        else 
        { 
         print("-> cloudKitSubscribeToChat - subscription count > 0, false") 
         exists = false 
        } 
       } 
       if exists == false 
       { 
        print("-> cloudKitSubscribeToChat - subscription do not exists, create") 
        subscribe() 
       } 
       else 
       { 
        print("-> cloudKitSubscribeToChat - subscription already exists") 
        result(error: nil) 
       } 
      } 
     } 
    } 

答えて

0

は私の問題の答えを見つけることができます。クエリーで見つかったalertBoddiesと基本的には作成しようとしているalertBodyを比較します。

if subscriptionUpdate.notificationInfo!.alertBody == subscription.notificationInfo!.alertBody 

は次のようになります。

publicDatabase.fetchAllSubscriptionsWithCompletionHandler { (subscriptions: [CKSubscription]?, error: NSError?) in 
     if error != nil 
     { 
      print("-> cloudKitSubscribeToChat - fetch subscription error") 
     } 
     else 
     { 
      print("-> cloudKitSubscribeToChat - fetch subscription no error") 
      if subscriptions?.count == 0 
      { 
       print("-> cloudKitSubscribeToChat - subscription count = 0, create") 
       subscribe() 
      } 
      else 
      { 
       print("-> cloudKitSubscribeToChat - subscription count > 0, create") 
       var exists = false 
       for subscription in subscriptions! 
       { 
        print("-> cloudKitSubscribeToChat - subscription compare, \(subscriptionUpdate.notificationInfo!.alertBody) = \(subscription.notificationInfo!.alertBody)") 
        if subscriptionUpdate.notificationInfo!.alertBody == subscription.notificationInfo!.alertBody 
        { 
         print("-> cloudKitSubscribeToChat - subscription count > 0, exists = true") 
         exists = true 
        } 
        else 
        { 
         print("-> cloudKitSubscribeToChat - subscription count > 0, exists = false") 
        } 
       } 
       if exists == false 
       { 
        print("-> cloudKitSubscribeToChat - subscription do not exists, create") 
        subscribe() 
       } 
       else 
       { 
        print("-> cloudKitSubscribeToChat - subscription already exists") 
        result(error: nil) 
       } 
      } 
     } 
関連する問題