NSManagedObject を使用していくつかの値を保存していますが、そのためにエンティティを使用していません。一部のエンティティに限定したくないからです。(Oist *)managedObject.entity を使用してみましたが、機能しません。この managedObject を使用して theIt を取得する方法は次のとおりです。
Oist.h
@class File;
@interface Oist : NSManagedObject
@property (nonatomic, retain) NSSet *files;
@end
@interface Oist (CoreDataGeneratedAccessors)
- (void)addFilesObject:(File *)value;
File.h
@class Oist;
@interface File : NSManagedObject
@property (nonatomic, retain) Oist *gist;
@end
- (void)newManagedObjectWithClassName:(NSString *)className forRecords:(NSDictionary *)records
{
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:className inManagedObjectContext:[[GPCoreDataController sharedInstance] backgroundManagedObjectContext]];
[records enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[self setValue:obj forKey:key forManagedObject:newManagedObject];
}];
}
- (void)setValue:(id)value forKey:(NSString *)key forManagedObject:(NSManagedObject *)managedObject
{
File *fileEntity = [NSEntityDescription insertNewObjectForEntityForName:@"File" inManagedObjectContext:[[GPCoreDataController sharedInstance] backgroundManagedObjectContext]];
if ([key isEqualToString:@"files"])
{
NSDictionary *files = (NSDictionary *)value;
for (NSString *key in [files allKeys]) {
NSDictionary *file = [files valueForKey:key];
NSLog(@"%@", file[@"filename"]);
[fileEntity setValue:file[@"filename"] forKey:@"filename"];
[fileEntity setValue:file[@"type"] forKey:@"type"];
}
} else if ([key isEqualToString:@"id"])
{
if ([managedObject.entity.name isKindOfClass:[Oist class]]) {
//here I want to use Oist's method - (void)addFilesObject:(File *)value; how to do that?
}
[managedObject setValue:[NSNumber numberWithInt:[value integerValue]] forKey:@"gistID"];
}
}