I'm sorry the title may mislead you, since I'm not so good at English. Let me describe my problem as below (You may skip to the TL;DR version at the bottom of this question).
In Coredata, I design a
Productentity. In app, I download products from a server. It return JSON string, I defragment it then save to CoreData.After sometimes has passed, I search a product from that server again, having some interaction with server. Now, I call the online product
XProduct. This product may not exist in CoreData, and I also don't want to save it to CoreData since it may not belong to this system (it come from other warehouse, not my current warehouse).Assume this
XProducthas the same properties asProduct, but not belong to CoreData, the developer from before has designed another Object, theXProduct, and copy everything (the code) fromProduct. Wow. The another difference between these two is,XProducthas some method to interact with server, like:- (void)updateStock:(NSInteger)qty;Now, I want to upgrade the
Productproperties, I'll have to update theXProductalso. And I have to use these two separately, like:
id product = anArrayContainsProducts[indexPath.row];
if ([product isKindOfClass:[XProduct class]] {
// Some stuff with the xproduct
}
else {
// Probably the same display to the cell.
}
TL;DR
Basically, I want to create a scenario like this:
- Get data from server.
- Check existed in CoreData.
2== true => add to array (also may update some data from server).2== false => create object (contains same structure asNSManagedObjectfrom JSON dictionary => add to array.
The object created in step 4 will never exist in CoreData.
Questions
- How can I create an
NSManagedObjectwithout having it add toNSMangedObjectContextand make sure the app would run fine? - If
1is not encouragement, please suggest me a better approach to this. I really don't like to duplicate so many codes like that.
Update
I was thinking about inheritance (XProduct : Product) but it still make XProduct the subclass of NSManagedObject, so I don't think that is a good approach.