gpt4 book ai didi

objective-c - macOS NSDistributedNotification : fprint or NSLog value of a specific key in userInfo?

转载 作者:行者123 更新时间:2023-12-03 17:47:15 24 4
gpt4 key购买 nike

我有一个应用程序发送以下 NSDistributed 通知,我最终希望使用 CLI“抓取”其中的一部分并将其通过管道传输到 shell 脚本:

{name = TheApplicationNotification; object = TheApplicationNotification; userInfo = {
path = "/path/to/a/file";
}}

我对编程一无所知,但我设法使用以下小型 CLI 代码获取整个通知,这些代码无耻地从两个旧的 stackoverflow 评论中组合在一起:

#import <Foundation/NSObject.h>
#import <Foundation/NSNotification.h>
#import <Foundation/NSString.h>
#import <Foundation/NSDistributedNotificationCenter.h>
#import <Foundation/NSRunLoop.h>
#import <stdio.h>

@interface monitorcli: NSObject {}
-(id) init;
-(void) receive: (NSNotification*) notification;
@end

@implementation monitorcli
-(id) init {
NSDistributedNotificationCenter * center
= [NSDistributedNotificationCenter defaultCenter];

[center addObserver: self
selector: @selector(receive:)
name: @"TheApplicationNotification"
object: nil
];
fprintf(stderr,"Listening...\n");
[[NSRunLoop currentRunLoop] run];
fprintf(stderr,"Stopping...\n");
return self;
}
-(void) receive: (NSNotification*) notification {
NSLog(@"%@", notification);
}
@end

int main( int argc, char ** argv) {
[[monitorcli alloc] init];
return 0;
}

我还设法通过替换来获取通知名称

NSLog(@"%@", notification);

对于

fprintf(stderr,"%s\n", [[notification name] UTF8String] );

我现在的问题是:需要对代码进行哪些更改才能仅打印 userInfo 中的“path”键

最佳答案

尝试:

NSLog(@"%@", notification.userInfo[@"path"]);

.userInfo 获取userInfo属性的值,该值是一个字典。然后,[@"path"] 获取与字典中的 @"path" 键关联的值。

注意:所有代码都直接输入到答案中,预计会有轻微的拼写错误。

关于objective-c - macOS NSDistributedNotification : fprint or NSLog value of a specific key in userInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639507/

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