gpt4 book ai didi

objective-c - 如何获取登录用户的头像?

转载 作者:行者123 更新时间:2023-12-03 18:07:36 25 4
gpt4 key购买 nike

macOS 允许用户为其本地帐户设置个人资料图片。该图片可以在“帐户”系统首选项 Pane 中修改,并且在登录时特别显示。有没有办法使用 Cocoa 或其他系统框架来访问它?

最佳答案

按照 dscl 的建议,可以从 Open Directory 访问该信息。 -read/Users/my_user_name_here 具有 JPEGPhotoPicture 属性。开放目录框架相当古老:文档稀疏,示例几乎不存在,但在挖掘时我发现了 Python test在 Apple 存储库中,该存储库充分展示了如何使用 API 来入门。我终于想出了这个:

NSData *getODImage(NSString *userName) {
ODNode *local = [ODNode nodeWithSession:ODSession.defaultSession name:@"/Local/Default" error:nil];
if (!local) {
return nil;
}
ODRecord *record = [local recordWithRecordType:kODRecordTypeUsers name:userName attributes:nil error:nil];
if (!record) {
return nil;
}
NSArray *photoAttributes = @[kODAttributeTypePicture, kODAttributeTypeJPEGPhoto];
NSDictionary *details = [record recordDetailsForAttributes:photoAttributes error:nil];
if (!details) {
return nil;
}

NSData *jpegData = [details[kODAttributeTypeJPEGPhoto] objectAtIndex:0];
if (jpegData) {
return jpegData;
}

for (NSString *picturePath in details[kODAttributeTypePicture]) {
NSData *pictureContents = [NSData dataWithContentsOfFile:picturePath];
if (pictureContents) {
return pictureContents;
}
}
return nil;
}

其中userNameNSUserName()的结果。这似乎在本地执行得很快,但我仍然让它从并发队列运行以避免阻塞主线程。

通过kODAttributeTypePicture返回的图片路径位于全局/Library目录中,可以从默认沙箱中读取该目录。所有默认用户图片都是这种情况。然而,情况可能并不总是如此,所以请做好没有照片的准备。

正确地说,当用户是网络用户时,YMMV;我认为您必须将节点从/Local/Default 更改为其他节点。

关于objective-c - 如何获取登录用户的头像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61180038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com