これは、元のヘッダファイルです:私は警告を無視して実行すると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]);
}
}
あなたはインターフェイスを持っていますが、(有効な)実装がありますか? – Joost
メソッドをどのように呼びますか? – BoltClock
実装ファイルはどこにありますか? – EmptyStack