Search code examples
iosfacebookswiftfacebook-ios-sdk

Facebook ios sdk (obj-c to swift) issue


I am trying to bring obj-c code to swift (facebook ios sdk), but autocomplete(intellisense) does not work in handler and I get an error (marked in code) : Set NSObject does not have a member named 'containsObject'

@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

                }
            }

        })



    }

Solution

  • Because Swift 1.2 automatically casts all NSSet objects (the ones that coming from external libs/sdks/frameworks etc...) to Set structure you need to call contains instead of containsObject for such things (doc).