最終的にオブジェクトを使用して Core Data にクエリを発行findByX
するジェネリッククラスで一連のマジック メソッドを開発しようとしています。Model
NSPredicate
(id)findByName;
(id)findByCreated;
...
以前の SO の質問からのアドバイスに従って、存在しないメソッドを要求するメッセージをオーバーライドすることで傍受できますresolveInstanceMethod
。
#include <objc/runtime.h>
+ (BOOL) resolveInstanceMethod:(SEL)aSel {
if (aSel == @selector(resolveThisMethodDynamically)) {
class_addMethod([self class], aSel, (IMP) dynamicMethodIMP, "v@:");
return YES;
}
return [super resolveInstanceMethod:aSel];
}
void dynamicMethodIMP(id self, SEL _cmd) {
NSLog(@"Voilà");
}
ただし、[myObject resolveThisMethodDynamically]
コンパイラを使用しようとすると、次のエラーが発生します。
"No visible @interface for 'MyModel' declares the selector 'resolveThisMethodDynamically'"
そのメソッドの宣言がないため、これは理にかなっています。それで、私はここで何が欠けていますか?これを達成するためのベストプラクティスはありますか?
ありがとうございました!