属性としてempId、Name、deptIdを持つ「従業員」エンティティからデータを取得しようとしています。
// Used to Populate data in table
Employee : NSObject
@property (nonatomic, retain) NSString *name;
@property int empId;
@property int deptId;
@synthesize empId, name, deptId;
&
CDEmployee : NSManagedObject
@property (nonatomic, retain) NSString *name;
@property int empId;
@property int deptId;
- (void)convertMyData:(Employee *)emp;
@dynamic empId, name, deptId;
- (void)convertMyData:(Employee *)emp
{
self.empId = emp.empId;
self.name = emp.name;
self.deptId = emp.deptId;
}
// My code to fetch & convert data retured from db to Employee class
-(NSArray *)getAllEmployees:(NSManagedObjectContext*)context
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(empId > %@)",[NSNumber numberWithInt:-1],[NSNumber numberWithInt:1]];
NSFetchRequest* req = [self createRequest:context]; // Request is correct
[req setPredicate:predicate];
NSFetchedResultsController* fetchContr = [[NSFetchedResultsController alloc] initWithFetchRequest:req managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
NSError* error = nil;
[fetchContr performFetch:&error];
NSArray *fetchedObjects = [fetchContr fetchedObjects];
NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease];
for(int i = 0; i < [fetchedObjects count]; i++)
{
CDEmployee *cdEmp = [[fetchedObjects objectAtIndex:i] retain]; // just tried retaing
if (cdEmp)
{
Employee *emp = [[Employee alloc] init];
NSLog(@"Employee - %@", emp); // Shows tht is has object
[cdEmp convertMyData:emp]; //-----> Crashing here
[result addObject:emp];
[emp release];
}
}
[fetchContr release];
return result;
}
コア データから結果を取得していますが、正しい結果が返されますが、コア データの結果をEmployee(NSObject)
クラスに変換すると、[NSManagedObject convertMyData:]:
認識されないセレクターがインスタンスに送信されます。
クラスに別のメソッドを追加してみ-(void)helloWorld
ましたが、同じクラッシュが発生しました。CDEmployee
[cdEmp helloWorld];
問題を引き起こしている理由がわからない。メソッドを定義して適切な場所に実装しましたが、コンパイル時に警告さえ出ません。