Thanks for the response, 

>> With SmartGroups the situation is different. The relationship is not 
>> explicit; it is due to the fact that the entity's name is used in the 
>> predicate. If the user deletes the referenced entity the predicate will no 
>> longer be valid. This is possibly okay in that the predicate will return no 
>> group members. But if the entity is has its key field (name in this case) 
>> changed then the predicate will be incorrect; this is clearly not what the 
>> user expects to happen. Furthermore, the most serious problem is that it 
>> breaks NSPredicateEditor since there is no longer a popup menu item matching 
>> the deleted project. NSPredicateEditor cannot display this predicate so that 
>> the user can edit it to fix the problem.
>> 
>> I think it would be reasonable to let the user know that the proposed 
>> deletion will invalidate one or more existing SmartGroups and give him/her 
>> the option on how to deal with the situation. For a name change I could just 
>> silently update the predicate as long as I can arrange for a timely 
>> notification.
>> 
>> One possible solution is parse the SmartGroups's predicate each time it is 
>> set and then create an explicit bi-directional relationship between the 
>> SmartGroup object and the referenced entity. Then using KVO, I could 
>> determine all the SmartGroups that are referencing the to-be deleted entity. 
>> But I would need to do this before the entity is deleted, not wait until the 
>> save is attempted by Core Data.
>> 
>> So, before implementing the above solution, I thought I would post to the 
>> list to see if anyone has any suggestions for me. Am I modelling the  
>> situation correctly? Is it possible to accomplish what I want (essentially 
>> intercept entity deletion) in a reasonably elegant manner?
> 
> Even if you could capture a proposed deletion before save, which AFAIK you 
> can't, you will still have an undo mess. IMHO you best bet is to capture the 
> situation at the point of editing the predicate, substituting the deleted 
> item with a placeholder like "<deleted>".
I agree, trying to capture the deletion would be an unholy mess. 

But perhaps I haven't explained the problem clearly enough. The problem arises 
not when the predicate is being edited, but when entity referenced in the 
predicate is deleted. I need to find a way to notice this and then to take 
corrective action. 

Also, it would be nice to let the user know that the deletion of this entity 
will invalidate a SmartGroup. Once the model is changed appropriately I can 
perform this check in response to the user request to delete the entity.



> 
> HTH,
> 
> Keary Suska
> Esoteritech, Inc.
> "Demystifying technology for your home or business"

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to