7

私はiOS開発にまったく慣れておらず、本を使って学んでいます。初期の章の 1 つの指示に従って、短いアプリを作成しました (以下のコード)。テキスト入力を取り、それに合わせてラベルのテキストを変更するだけです。ただし、シミュレーターでコードを実行すると、テキストフィールドをクリックすると次のエラーが発生します。

2012-06-08 11:26:06.595 HelloNoun[14926:f803] '/Users/clhu/Library/Application Support/iPhone Simulator/5.1/Library/Caches/com.apple.keyboards/images/1859589221' を開くことに失敗しました: 'そのようなファイルまたはディレクトリはありません' (2)

2012-06-08 11:26:06.702 HelloNoun[14926:f803] 'INSERT INTO store VALUES (?,?,?,?,?,?,?,?)' 制約が失敗しました (19)

次に、ボタンを押してラベルを設定すると、次のエラーも発生します。

2012-06-08 11:27:09.050 HelloNoun[14926:f803] -[UIView テキスト]: 認識されないセレクターがインスタンス 0xb75ac80 に送信されました

2012-06-08 11:27:09.051 HelloNoun[14926:f803] *キャッチされない例外 'NSInvalidArgumentException' によるアプリの終了、理由: '-[UIView テキスト]: 認識されないセレクターがインスタンス 0xb75ac80 に送信されました'

*最初のスロー コール スタック:

(0x13c7022 0x1558cd6 0x13c8cbd 0x132ded0 0x132dcb2 0x21a7 0x13c8e99 0x1414e 0x140e6 0xbaade 0xbafa7 0xba266 0x393c0 0x395e6 0x1fdc4 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da 0x12fdd84 0x12fdc9b 0x12b07d8 0x12b088a 0x11626 0x1dad 0x1d15) terminate called throwing an exception(lldb)

私は自分の接続を調べて、自分の手順を数回たどりましたが、露骨に間違っているものは何も見当たりません (ただし、私は間違いなくこれに非常に慣れていません)。誰かが私を正しい方向に向けるのを手伝ってくれますか? ありがとう!


コードは次のとおりです。

// ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *userOutput;
@property (strong, nonatomic) IBOutlet UITextField *userInput;

- (IBAction)setOutput:(id)sender;

@end

// ViewController.m

#import "ViewController.h"

@implementation ViewController
@synthesize userOutput;
@synthesize userInput;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setUserOutput:nil];
    [self setUserInput:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)setOutput:(id)sender 
{
    self.userOutput.text = self.userInput.text;
}
@end
4

1 に答える 1

4

最初のエラーは見たことがありませんが、パスのキャッシュ フォルダーを削除してみてください/Users/clhu/Library/Application Support/iPhone Simulator/5.1/Library/Caches。シミュレーターは、それを再現するのに十分なほどスマートでなければなりません。

2 番目のエラーについては、通常、プロパティを NIB の間違ったビューに接続すると表示されます。プロパティuserOutputが UITextField ではなく UIView を指しているようです。に次の行を追加して、NIB の接続を確認するか、userOutput の値を出力できます setOutput:

NSLog(@"%@", self.userOutput);

ログの出力は次のようになります

<UITextField: 0x6fea9f0; frame = (0 0; 100 31); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6fec700>>

于 2012-06-08T16:01:25.537 に答える