我是新手,请耐心等待。 我的问题在于以下代码:
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
请告诉我哪里出错了。我确信这是一种新手的错误,但我似乎无法找到它。
感激地收到任何建议!
答案 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];
路径是零。因此,对于所有概率,文件不在捆绑中。将其添加为项目的目标。
怎么做
例如,最后一天我需要在捆绑中添加鲨鱼的图像,这是怎么做的: