Core data 声明为类的所有内容都必须是NSObject吗?
我将其分类如下:Core data 声明为类的所有内容都必须是NSObject吗?,core-data,xcode4.5,Core Data,Xcode4.5,我将其分类如下: @interface NSObject (defaultSelector) +(NSString *) defaultSelector; -(NSString *)defaultSelector; @end -(void)prefetchShortcutWithTable: (Class) someNSManagedObjectClass forInputArray: (NSArray *) inputArray withDictCache: (NSMutableDictio
@interface NSObject (defaultSelector)
+(NSString *) defaultSelector;
-(NSString *)defaultSelector;
@end
-(void)prefetchShortcutWithTable: (Class) someNSManagedObjectClass forInputArray: (NSArray *) inputArray withDictCache: (NSMutableDictionary *) dictToSave
{
NSString * attribute = [someNSManagedObjectClass defaultSelector];
[self prefetchShortcutWithTable:NSStringFromClass(someNSManagedObjectClass) forAttribute:attribute forInputArray:inputArray withDictCache:dictToSave];
}
然后,我这样使用它:
@interface NSObject (defaultSelector)
+(NSString *) defaultSelector;
-(NSString *)defaultSelector;
@end
-(void)prefetchShortcutWithTable: (Class) someNSManagedObjectClass forInputArray: (NSArray *) inputArray withDictCache: (NSMutableDictionary *) dictToSave
{
NSString * attribute = [someNSManagedObjectClass defaultSelector];
[self prefetchShortcutWithTable:NSStringFromClass(someNSManagedObjectClass) forAttribute:attribute forInputArray:inputArray withDictCache:dictToSave];
}
整件事都起作用了。但是,编译器如何知道someNSManagedObjectClass将是NSObject的子类
事实上,我如何重写函数,使
-(void)prefetchShortcutWithTable:(Class)someNSManagedObjectClass for inputArray:(NSArray*)inputArray with DictCache:(NSMutableDictionary*))dictToSave
仅接受NSManagedObject的子类?NSObject
是您将要创建的任何SomeNSManagedObject类
或任何其他类的基类。能否显示文档?并非所有内容都是NSObject的后代。@SharenEayrs:NSManagedObject类引用的第一行是:“继承自NSObject”。-NSObject是大多数Objective-C类层次结构的根类。我所知道的唯一例外是NSProxy
。是的。也许任何其他类
的部分被夸大了,但是NSObject
仍然是Objective-C层次结构中大多数类的根类,并且肯定是针对某些管理对象类
。您可能想签出NSManagedObject
类的参考文档。对于NSObject
类,如果我想指定someNSManagedObjectClass必须是NSManagedObject的后代,该怎么办?在声明类的.h
文件中,使用以下语句@interface someClass:someClass
告诉编译器它继承了哪个类。您可以告诉someClass
它是任何类的后代,即使您希望它是您创建的某个自定义类的后代。