Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何遵守Swift中的协议?_Swift - Fatal编程技术网

如何遵守Swift中的协议?

如何遵守Swift中的协议?,swift,Swift,我尝试将facebookSDK方法转换为swift代码: - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:`(id<FBGraphUser>)user {} -(无效)loginView蚀刻教育信息:(FBLoginView*)loginView 用户:`(id)用户{} 问题在于: id<FBGraphUser>)user id)用户 在目

我尝试将facebookSDK方法转换为swift代码:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                        user:`(id<FBGraphUser>)user {}
-(无效)loginView蚀刻教育信息:(FBLoginView*)loginView
用户:`(id)用户{}
问题在于:

id<FBGraphUser>)user
id)用户
在目标C中:符合协议

在Swift中表示泛型


如果您只想确认用户类型为id并符合协议FBGraphUser:

id是Swift中的任意对象

您可以在变量名声明中使用协议作为类型

func loginViewFetchedUserInfo<T where T: AnyObject, T: FBGraphUser>(loginView: FBLoginView, #user: T)
{
   ...
}
// use the # only if you want the call of the method to write 'user:'
可能不需要
用户:
,因为这是方法的正常模式


但是,您可以使用
where
关键字做更多的工作

在类型名称后使用,其中指定需求列表,例如,要求类型实现协议,要求两个类型相同,或要求类具有特定的超类


摘自:苹果公司的《Swift编程语言》

你能告诉我如何在我发布的方法中使用吗?好的,我没有错误,但是方法没有被调用。当然,我想你应该声明它。我向您展示了如何声明这样一种方法是的,我知道,但是当我运行我的应用程序时,什么都没有发生,甚至不清楚您想要什么。你应该用更多的细节信息更新你的问题。
facebookObject.loginViewFetchedUserInfo(loginView: myLoginView, user: myLoginView)