找不到接受提供的参数的“logInWithPermissions”的重载

Posted

技术标签:

【中文标题】找不到接受提供的参数的“logInWithPermissions”的重载【英文标题】:Could not find an overload for 'logInWithPermissions' that accepts the supplied arguments 【发布时间】:2014-06-04 00:52:12 【问题描述】:

我收到此错误消息以响应以下代码。我知道这通常在需要显式转换类型时出现,但此处的权限数组被显式定义为 AnyObject[]?,即正确的参数类型。

编辑:使用 Facebook 登录进行解析(文档:https://www.parse.com/docs/ios_guide#fbusers-setup/iOS)

let permissions: AnyObject[]? = ["email", "user_education_history", "publish_stream", "publish_actions"]

PFFacebookUtils.logInWithPermissions(permissions, block:  (user: PFUser, error: NSError) in
        if (!user) 
            println("Uh oh. The user cancelled the Facebook login.");
         else if (user.isNew) 
            println("User signed up and logged in through Facebook!");
         else 
            println("User logged in through Facebook!");
        
    )

【问题讨论】:

你能发布你的错误信息吗? 错误信息是标题,我相信 如果permissionsString[] 会发生什么(不是可选的也不是AnyObject,但大多不是可选的)? @matt,使用let permissions: String[] ...返回同样的错误 如果你这样写块会发生什么:user, error in...?我在想也许该块没有在另一端显式键入,所以你必须让类型被推断出来......? 【参考方案1】:

问题在于第二个参数,块。这两个参数的类型为PFUserNSError,但它们应该是可选类型(因为这些值来自Objective-C,并且可以为nil)。您可以通过从闭包中排除类型并让编译器推断它们来修复它:

PFFacebookUtils.logInWithPermissions(permissions, block:  user, error in ... )

【讨论】:

以上是关于找不到接受提供的参数的“logInWithPermissions”的重载的主要内容,如果未能解决你的问题,请参考以下文章

Swift:找不到“|”的重载接受提供的参数

找不到接受提供的参数的 init 重载

Swift 找不到接受提供的参数的“+=”的重载

找不到接受提供的参数的“logInWithPermissions”的重载

错误:找不到接受提供的参数的“标题”的重载

Powershell 找不到接受参数“10”的位置参数。虽然甚至不使用位置参数