0

我是新手,所以请多多包涵。我的问题出在以下代码中:

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 的副本在支持文件中)

主文件

#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 字符串

范围'

*首先抛出调用栈:

(

0 核心基础 0x00007fff8db7df56 __exceptionPreprocess + 198

1 libobjc.A.dylib 0x00007fff95dfbd5e objc_exception_throw + 43

2 核心基础 0x00007fff8db7dd8a +[NSException raise:format:arguments:] + 106

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

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

5 基础 0x00007fff8fd6add9 +[NSURL(NSURL) 文件URLWithPath:] + 47

6 Test8 0x0000000100000d9d -[AppleScriptController 测试] + 205

7 测试8 0x0000000100000cac 主要 + 108

8 测试8 0x0000000100000c34 开始 + 52

9 ???0x0000000000000001 0x0 + 1

)

终止调用抛出异常sharedlibrary apply-load-rules all

当前语言:自动;目前客观-c

(gdb)

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

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

我在 OS X 10.7.5 上运行 XCode 4.2.1

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

任何建议都感激不尽!

4

1 回答 1

3

从错误代码:

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

所以在这里:

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

路径为零。因此,该文件很可能不在捆绑包中。将其添加为项目的目标。

怎么做

例如,昨天我需要在包中添加鲨鱼的图像,这就是如何做到的:

在此处输入图像描述

于 2013-01-02T22:39:14.220 回答