2011-01-24 17 views
0

これは、元のヘッダファイルです:私は警告を無視して実行するとtestPopulateTestDataObjective-C:なぜこの関数名が警告を発しましたか?

ため

method definiton not found

:私は、このファイルをコンパイルするとき、私はこの警告を得た

@interface TestDataHelper : NSObject { 



} 
+(void) populateTestData:(NSManagedObjectContext*) managedObjectContext; 

+(void) testPopulateTestData:(NSManagedObjectContext*) managedObjectContext; 

@end 

iPhoneのシミュレータのアプリ、私は実行時の例外を持っています:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[TestDataHelper testPopulateTestData:]: unrecognized selector sent to class 0x104d8'

だけでは「試験」にメソッドの名前を変更し、問題testXXXメソッド名について特別である何

を解決するように見えますか?

EDIT:実装があります。メソッド名(.hと.mの両方)の名前を変更すると警告が削除され、最終的なアプリケーションが機能します。

EDIT 2:ここ

は(もともとtestPopulatedTestDataと命名)機能testの実装です:

+(void) test:(NSManagedObjectContext*) managedObjectContext { 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stock" inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptors release]; 
    [sortDescriptor release]; 

    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 

    NSEnumerator *e = [mutableFetchResults objectEnumerator]; 
    id object; 
    while (object = [e nextObject]) { 
     // do something with object 
     Stock* fc = (Stock*) object; 
     NSLog(@"get a fc %s", [[fc name] description]); 
    } 

} 
+1

あなたはインターフェイスを持っていますが、(有効な)実装がありますか? – Joost

+1

メソッドをどのように呼びますか? – BoltClock

+1

実装ファイルはどこにありますか? – EmptyStack

答えて

1

エラーメッセージは、あなたの中にメソッドを宣言したことを語っていますあなたがどこにも実装していないヘッダーファイル。ランタイムエラーはあなたに同じことを伝えています - セレクタtestPopulateTestDataをクラスTestDataHelperに送りましたが、これは決して実装されませんでした。

関連する問題