gpt4 book ai didi

cocoa - NSTask plutil 无法识别的选项

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

我正在尝试使用 NSTask 将二进制 plist 转换为 xml,尽管遇到了一个我不太理解的错误。如果我将命令 NSTask 失败并将其复制到命令行,它就可以正常工作。希望有人能告诉我出了什么问题。

NSString *defaultPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences/com.defaults.plist"];

task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/plutil"];

NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"-convert xml1", defaultPath, nil];

// using `@"-convert", "xml1", defaultPath, nil` doesn't seem to work either.

[task setArguments: arguments];

NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

[task waitUntilExit];
[task release];

NSLog

/usr/bin/plutil (
"-convert xml1",
"/Users/Mira/Library/Preferences/com.defaults.plist"
)
unrecognized option: -convert xml1

最佳答案

NSTask 为 shell 格式化命令的方式可能有点棘手。这是一个应该有所帮助的建议。

[task setLaunchPath:@"/bin/bash"];

NSMutableArray *commandLine = [NSMutableArray new];
[commandLine addObject:@"-c"];
[commandLine addObject:@"/usr/bin/plutil -convert xml1"];
[commandLine addObject:defaultPath];

如果这不起作用,则创建一个由 plutil 命令和文件路径组成的长字符串,并将其作为 -c 之后的第二个对象添加到命令行。

例如:

NSString *cmd = [NSString stringWithFormat:@"/usr/bin/plutil -convert xml1 %@",defaultPath];

然后将其添加到数组

[task setLaunchPath:@"/bin/bash"];

NSMutableArray *commandLine = [NSMutableArray new];
[commandLine addObject:@"-c"];
[commandLine addObject:cmd];

希望有帮助。祝你好运!

关于cocoa - NSTask plutil 无法识别的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011072/

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