编辑:我想我不应该制作这种实例方法,而是让它成为类方法!?另一件事,我将 fetch 方法添加到类 C,它有效。我只是在想,如果可以通过托管对象访问数据存储会很方便,但我想这有点违背背后的想法managedObjectContext
,持久性等等?
我不确定我是否正在尝试做一些你不应该做的事情,但是就这样吧。
我有一个数据模型,其中实体 A 与实体 B 有关系(B 到许多 A)。我在数据存储中有许多类型为 B 的实体,现在我想创建一些类型为 A 的实体。为此,我需要获取对类型 B 的实体的引用,即我有查询数据存储。我在 B 类中执行以下操作,即:
#import "B+Helper.h"
@dynamic managedObjectContext;
@implementation B (Helper)
- (Store *)getBByRef:(NSString *)ref
{
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"B" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"ref == %@", ref];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *storeArray = [self.managedObjectContext executeFetchRequest:request error:&error];
NSInteger bCount = [bArray count];
if ( bCount > 1 || bCount == 0) {
// Deal with error...
} else {
return [bArray objectAtIndex:0];
}
}
现在,问题是我似乎无法正确设置 managedObjectContext ---我收到错误:
CoreData: error: Failed to call designated initializer on NSManagedObject class 'B'
managedObjectContext
在调用上述方法之前,我尝试将 AppDelegate 传递给 C 类,必须获取 B 实体并从 C 类传递给 B+Helper 类,但这不起作用。
基本上,我只是希望能够从一个简单的NSObject
类或NSManagedObject
扩展中进行核心日期查询,即从一个不是UIViewController
某种类的类。
在 CI 类中做了如下操作:
B *b = [[B alloc] init];
b.managedObjectContext = self.managedObjectContext;
但后来我收到一个错误,说选择器不存在:
setManagedObjectContext:]: unrecognized selector sent to instance...
我希望这是有道理的?!