NSApplescript不接受initWithContentsOfURL

时间:2013-01-02 22:24:40

标签: objective-c macos cocoa applescript

我是新手,请耐心等待。 我的问题在于以下代码:

AppleScriptController.h

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>        
@interface AppleScriptController : NSObject    
-(void)test;
@end

AppleScriptController.m

#import "AppleScriptController.h"    
@implementation AppleScriptController

-(void)test{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"beep" 
                                                 ofType:@"scpt"];    
    NSAppleScript *script2 = [[NSAppleScript alloc]
                          initWithContentsOfURL:[NSURL fileURLWithPath:path] 
                          error:nil];    
    [script2 executeAndReturnError:nil];    
}
@end

(beep.scpt的副本位于支持文件中)

的main.m

#import <Foundation/Foundation.h>
#import "AppleScriptController.h"

AppleScriptController *myScript = [[AppleScriptController alloc] init];
[myScript test];

当我运行它时,我收到以下错误消息: 线程1:编程接收信号:“SIGABRT”

NSAppleScript *script2 = [[NSAppleScript alloc]
                          initWithContentsOfURL:[NSURL fileURLWithPath:path] 
                          error:nil];    Thread 1: Program received signal: "SIGABRT"

并获取以下错误代码:

  

2013-01-02 23:09:09.269 Test8 [1627:707] * 终止应用

     

由于未捕获的异常'NSInvalidArgumentException',

     

原因:' * - [NSURL initFileURLWithPath:]:nil string

     

参数'

     

* 第一次抛出调用堆栈:

     

     

0 CoreFoundation 0x00007fff8db7df56 __exceptionPreprocess + 198

     

1 libobjc.A.dylib 0x00007fff95dfbd5e objc_exception_throw + 43

     

2 CoreFoundation 0x00007fff8db7dd8a + [NSException raise:format:arguments:] + 106

     

3 CoreFoundation 0x00007fff8db7dd14 + [NSException raise:format:] + 116

     

4 Foundation 0x00007fff8fd6ae40 - [NSURL(NSURL)initFileURLWithPath:] + 78

     

5 Foundation 0x00007fff8fd6add9 + [NSURL(NSURL)fileURLWithPath:] + 47

     

6 Test8 0x0000000100000d9d - [AppleScriptController test] + 205

     

7 Test8 0x0000000100000cac main + 108

     

8 Test8 0x0000000100000c34 start + 52

     

9 ??? 0x0000000000000001 0x0 + 1

     

     

终止被称为抛出例外共享库,应用加载规则全部

     

当前语言:auto;目前的目标-c

     

(gdb)

当我将m文件更改为initWithSource时,程序运行正常:

NSAppleScript *script1 = [[NSAppleScript alloc] initWithSource:@"beep 10"];
[script1 executeAndReturnError:nil];

我在OS X 10.7.5上运行XCode 4.2.1

请告诉我哪里出错了。我确信这是一种新手的错误,但我似乎无法找到它。

感激地收到任何建议!

1 个答案:

答案 0 :(得分:2)

从错误代码:

reason: '* -[NSURL initFileURLWithPath:]: nil string

所以这里:

NSString *path = [[NSBundle mainBundle] pathForResource:@"beep" 
                                             ofType:@"scpt"];    
NSAppleScript *script2 = [[NSAppleScript alloc]
                      initWithContentsOfURL:[NSURL fileURLWithPath:path] 
                      error:nil];  

路径是零。因此,对于所有概率,文件不在捆绑中。将其添加为项目的目标。

怎么做

例如,最后一天我需要在捆绑中添加鲨鱼的图像,这是怎么做的:

enter image description here