Cocoa 获取用户帐户映像
简单地说:如何获取用户的帐户映像Cocoa 获取用户帐户映像,cocoa,macos,Cocoa,Macos,简单地说:如何获取用户的帐户映像 我在Mac上使用Cocoa。如果您可以获得代表所讨论用户的CSIdentityRef或CBIdentity*的句柄,那么您可以调用-[CBIdentity image]方法来检索他们的帐户映像 编辑: 下面是我之前的回答,它显示了如何查询系统上的所有标准用户帐户,并将它们转换为CBIdentity对象: 如果您不想链接到Collaboration.framework,那么可以使用类似(或类似变体之一)的方法直接获取图像。我个人认为使用本机Cocoa对象更好,但在
我在Mac上使用Cocoa。如果您可以获得代表所讨论用户的
CSIdentityRef
或CBIdentity*
的句柄,那么您可以调用-[CBIdentity image]
方法来检索他们的帐户映像
编辑:
下面是我之前的回答,它显示了如何查询系统上的所有标准用户帐户,并将它们转换为CBIdentity
对象:
如果您不想链接到Collaboration.framework,那么可以使用类似(或类似变体之一)的方法直接获取图像。我个人认为使用本机Cocoa对象更好,但在这种情况下,这并不是绝对必要的。如果您只需要登录用户的图像,也可以使用AddressBook使用一行代码获取图像:
NSData *imgData = [[[ABAddressBook sharedAddressBook] me] imageData];
但我相信这不能保证与登录图像相同。如果用户删除vcard,则地址簿方法不起作用 我使用了永不中断的CBIdentity方法,正如Dave所说:
+ (NSImage *)userImage
{
CBIdentity *identity = [CBIdentity identityWithName:NSUserName() authority:[CBIdentityAuthority defaultIdentityAuthority]];
return [identity image];
}
为了使用CBIdentity,您需要将协作框架添加到目标中,并使用以下include指令
#import <Collaboration/Collaboration.h>
#导入
是的,如果可能的话,我确实想要用户帐户映像(登录映像),而不仅仅是用户的通讯簿配置文件映像。谢谢anyway@magikseb然后我认为戴夫的方法是可行的,这就是我投票支持它的原因!:)+浏览地址簿是一个非常有趣的想法。我不知道这是否是OP想要的,但这是一个寻找信息的好地方。我想这对我来说会很好。起初它不起作用,因为我没有通过按系统首选项中的按钮为自己创建卡。这可能不好,但我输入了帮助,转到Sys Prefs=>Accounts,单击按钮等,使其正常工作。@magikseb:我认为当设置用户帐户时,地址簿卡也是如此,但我不是肯定的。当然,用户可以更改或删除该卡。我删除了我的。很抱歉,但经过一点研究,我仍然不知道如何编写此代码?如果图像发生更改,是否有任何方法可以得到通知?CSIdentity查询回调似乎没有注意到image@Radekprogrammer:“Cocoa”意味着他在使用Objective-C。戴夫·德隆:至少100%的人都不这么认为。Ruby和Python绑定是可用的,汇编也是一个选项。@Radek很公平,不过如果他使用Ruby或Python桥,他可能会指定。无论如何,你是对的。当我使用此选项时,[identity image]
的值为零,但我的映像在系统首选项中是一个纸杯蛋糕:/n是否有方法在映像更改时得到通知?@LoyalTingley您找到了解决问题的方法吗?我想我遇到了同样的问题。对我来说,该API为任何管理员用户返回的图像都是零。