Reputation: 3587
I was watching this tutorial to use Core Data in Xcode 8 and the video was using Swift. In the video, He entered an entity named Task
in the Core Data model and then in the code he was able to call Task
like:
let task = Task(context: context)
I have an entity called Tag
. How can I access Tag in code using Objective-C? Codegen is set in the Core Data model but I don't see any additional files in my project. If I try:
Tag test = [[Tag alloc] init];
I get an error that Tag
does not exist.
Upvotes: 6
Views: 7494
Reputation: 5888
Select the entity 'Tag' in model editor.
Generate source code for Task by selecting menu tree 'Editor' -> 'Create NSManagedObject Subclass...' then follow the instruction.
'Tag+CoreDataClass.h'
'Tag+CoreDataClass.m'
'Tag+CoreDataProperties.h'
'Tag+CoreDataProperties.m'
files will be created and automatically will be attached to your project.
Import header file.
#import "Tag+CoreDataProperties.h"
Then create 'Tag' class.
NSManagedObjectContext *wContext = ((AppDelegate *)UIApplication.sharedApplication.delegate).persistentContainer.viewContext;
Tag *wTag = [[Tag alloc] initWithContext:wContext];
wTag.name = @"TEST";
Upvotes: 3
Reputation: 2593
If Codegen is set to "Class Definition" then you can just import your entity's NSManagedObject
subclass header file.
Import:
#import "Tag+CoreDataClass.h"
Then the creation of your Tag
object will be recognized.
Tag *tag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:[self managedObjectContext];
tag.name = @"Tag Name";
Note: If you want to see the files that were generated on your behalf, you can check the DerivedData folder for your project. You should not edit these files or import them into your project.
Something like:
/Users/{Username}/Library/Developer/Xcode/DerivedData/{Your Project Name}/Build/Intermediates/{Your Project Name}.build/Debug-iphonesimulator/{Your Project Name}.build/DerivedSources/CoreDataGenerated/{Your Project Name}/
There are other Codegen options that offer different options depending on your use case:
NSManagedObject
subclasses yourself. With this option, you will see the files in your project and you can modify them.I posted a more detailed answer regarding Codegen options here: https://stackoverflow.com/a/40647786/4748172
Upvotes: 5