-3

我做了一个 IBAction,应该在 Safari 中将我带到 www.google.com,但是当我写进去时,它给了我错误

预期标识符或“(”

这是 .h 文件中的代码。

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@class AVCaptureSession, AVCaptureDevice;

@interface SignInViewController : UIViewController
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"

@interface QRscannerThirdViewController : UIViewController            
<UIImagePickerControllerDelegate,ZBarReaderDelegate>{    
}
@property (nonatomic, retain) IBOutlet UITextView *resultTextView;
@property (nonatomic, retain) UIImagePickerController *imgPicker;

-(IBAction)StartScan:(id) sender;
-(IBAction)TakeInput;


-(IBAction)LaunchPayPal; 
[[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"/private/etc/hosts"]]; 
     //This is where the error "Expected identifier or '('" shows up. 

@end
4

2 回答 2

1

这里有一些问题:

  1. 方法名称应该是lowerCamelCase. 一些例外情况适用,例如如果方法以众所周知的首字母缩写词(例如URLWithStringor UTF8String)开头。

  2. @interface块用于描述您的类的接口。这根本不应该包含任何实现细节。实现细节(即实际代码)放在一个@implementation块中。

  3. 您正在使用URLWithString:但没有提供 URL 字符串,而是提供了路径字符串。您需要使用fileURLWithPath:而不是URLWithString:.

总而言之,从你的@interface块中删除代码并将其移动到一个@implementation块中:

@implementation SignInViewController

- (IBAction) startScan:(id) sender
{
    // do stuff
}

- (IBAction) takeInput
{
    // do stuff
}

- (IBAction) launchPayPal
{
    [[[UIApplication sharedApplication] openURL:[NSURL fileURLWithPath:@"/private/etc/hosts"]];
}
@end
于 2013-02-03T02:41:26.877 回答
1

将 @interface 之后的 2 个 #import 语句移到文件顶部,并消除重复的 UIKit 导入。

接下来删除这一行:[[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"/private/etc/hosts"]]; 它不属于你的头文件,它进入了实现(.m)文件中的一个方法。

这应该让你走得更远一点。祝你好运。

于 2013-02-03T02:42:41.993 回答