2015-07-13 2 views
0

Я пытаюсь запустить код obj-c в swift (facebook ios sdk), но autocomplete (intellisense) не работает в обработчике, и я получаю сообщение об ошибке (помечено в коде): Set NSObject не есть член с именем «containsObject»Facebook ios sdk (obj-c to swift) issue

@IBAction func loginWithFacebook(sender: AnyObject) { 
     /* 
     FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
     [login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
     if (error) { 
     // Process error 
     } else if (result.isCancelled) { 
     // Handle cancellations 
     } else { 
     // If you ask for multiple permissions at once, you 
     // should check if specific permissions missing 
     if ([result.grantedPermissions containsObject:@"email"]) { 
     // Do work 
     } 
     } 
     }]; 
     */ 


     let fbLoginManager = FBSDKLoginManager() 
     fbLoginManager.logInWithReadPermissions(["email"], handler: { 
      result, error in 
      if ((error) != nil){ 

      } 
      else if (result.isCancelled){ 

      } else { 
       if(result.grantedPermissions.containsObject("email")){ //<-- error here 

       } 
      } 

     }) 



    } 

ответ

1

Поскольку Swift 1.2 автоматически отбрасывает все NSSet объектов (те, которые приходят от внешнего ЛИЭСА/SDKs/рамки и т.д ...) в Set структуры вам нужны набрать contains вместо containsObject для таких вещей (doc).

+0

Спасибо! Не могли бы вы также рассказать мне, что может быть причиной того, что автозаполнение (intellisense) не работает в обработчике (блок?)? – driver733

+1

@ user2441104 В вашем случае это, вероятно, потому, что вы явно не указали типы параметров блока. Попробуйте написать: '..., handler: {(результат: FBSDKLoginManagerLoginResult !, ошибка: NSError!) -> Void in ...'. Также это может быть просто отставание :) – Nevs12

+0

Это сработало! Очень признателен! – driver733