2010-07-02 37 views
0

确定这里是导致错误的部分代码:目标C错误:传递的参数1“setStringValue:”从兼容的指针类型

char charlieReturn[10000]; 
charlieReturn[10000] = system("osascript /applications/jarvis/scripts/getTextCharlieResponce.scpt"); 


self.charlieOutput.stringValue = charlieReturn; 

的getTextCharlieResponce.scpt返回是这样的:“嗨我的名字叫查理“,也许有时会比这更长。该脚本返回纯文本。我需要快速帮助!

在此先感谢! :d

利亚

+1

什么是charlieOutput和charlieOutput.stringValue? 错误告诉你,你正在尝试将stringValue设置为一个char数组,并且该stringValue不是一个char数组。 – 2010-07-02 20:04:56

回答

6

不幸的是,你的代码有很多问题。

  1. C功能system返回脚本的标准输出为char*

  2. 即使返回char*功能,则无法将其分配到的char一个数组,你做的事:

    char* str="aeiou"; 
    char foo[100]; 
    foo[100]=str; /* doesn't work */ 
    foo=str; /* doesn't work either */ 
    
  3. 可可的串类,NSString*,不C字符串char*,虽然如果你想有一个串出的

    NSString* str=[NSString stringWithUTF8String:"aeiou"]; 
    

:你可以在两者之间轻松转换一个苹果脚本调用,你需要做到以下几点:

  1. 准备一个NSAppleScript

    NSDictionary* errorDict; 
    NSAppleScript* script=[[NSAppleScript alloc] 
             initWithContentsOfURL:[NSURL fileURLWithPath:@"path/to/script" ] 
                 error:&errorDict]; 
    
  2. 执行并得到答复:

    NSAppleEventDescriptor* desc=[script executeAndReturnError:&errorDict]; 
    NSString* result=[desc stringValue]; 
    
  3. 发布脚本:

    [script release]; 
    

学习C & Objective-C玩得开心!

+1

+1好吧,更快,更深入......无需复制。 – Eiko 2010-07-02 20:12:46

0

你试图分配一个字符数组什么大概是一个NSString。试试这个:

self.charlieOutput.stringValue = [NSString stringWithUTF8String:charlieReturn]; 
+0

好吧,它使charlieOutput空白... :(任何想法?? – objectiveccoder001 2010-07-02 20:11:18

相关问题