我正在进行调整,用户通过首选项包写入命令的参数(例如来自sbutils的sbalert)。我能够将它保存到NSString但不能将其用作sbalert命令的参数。这可能吗?有替代方案吗?我的代码是
int main(int argc, char **argv, char **envp) {
NSString *string1 = @"Hello World";
NSLog(@"%@", string1);
system(" sbalert -t %@", string1);
return 0;
}
// vim:ft=objc
请注意,这是一个测试,因此NSString不等于Preference Bundle中的文本,但仍然会在编译时给出错误。
答案 0 :(得分:8)
没有。 system
函数不接受格式字符串,即使这样做,也不能使用%@格式说明符 - 仅适用于Cocoa,而不能在C标准库中使用。你必须预先格式化你的字符串,如:
NSString *cmd = [NSString stringWithFormat:@"sbalert -t '%@'", string1];
system([cmd UTF8String]);