找不到接受提供的参数的“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!");
)
【问题讨论】:
你能发布你的错误信息吗? 错误信息是标题,我相信 如果permissions
是String[]
会发生什么(不是可选的也不是AnyObject,但大多不是可选的)?
@matt,使用let permissions: String[] ...
返回同样的错误
如果你这样写块会发生什么:user, error in...
?我在想也许该块没有在另一端显式键入,所以你必须让类型被推断出来......?
【参考方案1】:
问题在于第二个参数,块。这两个参数的类型为PFUser
和NSError
,但它们应该是可选类型(因为这些值来自Objective-C,并且可以为nil)。您可以通过从闭包中排除类型并让编译器推断它们来修复它:
PFFacebookUtils.logInWithPermissions(permissions, block: user, error in ... )
【讨论】:
以上是关于找不到接受提供的参数的“logInWithPermissions”的重载的主要内容,如果未能解决你的问题,请参考以下文章