[baseten-users] More relationships coding

Réjean Lamy rejean.lamy at mac.com
Sat May 2 00:50:23 EEST 2009


Hi

About my work porting the Hillegass Depts application to BX, now I am  
trying to implement equivalent app coding. So far, handling fullName  
via employee class fullName method is ok. But I have difficulties how  
to code the department methods.

In the original example, CoreData generated the accessors so we can  
tap in the add/remove objects methods when an Department's employee is  
added/removed.

@interface Department (CoreDataGeneratedAccessors)
- (void)addEmployeesObject:(Employee *)value;
- (void)removeEmployeesObject:(Employee *)value;
@end

I would like to know how using the BX APi I can emulate this CoreData  
mechanism.

In the Hillegass Depts example, this is needed to monitor when a  
department's manager is removed from the department so the manager  
popup value can be adjusted according. Here we only need the remove  
method, but with CoreData they come in pairs (ref: Hillegass page 368).

Some ideas ?

Thanks

Rejean Lamy



Début du message réexpédié :

> De : Réjean Lamy <rejean.lamy at mac.com>
> Date : 23 avril 2009 11:35:51 HAE
> À : BaseTen-Users <baseten-users at lists.basetenframework.org>
> Objet : Réexp : [baseten-users] Using relationships with binding
>
> One more thing...
>
> I just finished porting the Department-Employees example with success.
> The only thing I cant do is to display "No value" in the manager  
> popup when the manager employee moved to an other department.
>
> I explain:
>
> When an employee whas selected as the department manager and is  
> later deleted, the manager popup display "No Value".
> This is ok and I experiment the same behavior on both the CoreData  
> and BX versions of the application.
>
> However, when an employee is selected as the department manager  and  
> later I moved the employee to another department,
> this time, the manager popup display the expected "No value" in the  
> CoreData version, but display
>
> "<BXDatabaseObject(0x15503ff0) pgsql://localhost/depts/public/Employee?id,n=2 
>  fault: 1>"
>
> in the BX version of the application.
>
> I understand the displayed string is related to the manager  
> relationship no longer point to an existing employee in selected  
> department.
>
> But, how I can fix that (via IB or coding) so the manager popup  
> display "No value" instead  ?
>
> Finally, is there an ftp location where BX users can share simple  
> examples like this.
> I suggest BX staff to put in place such code sharing facilities  
> specially for the BX community (and a forum maybe).
>
> Thanks
>
> Rejean Lamy
>
>
>
>
> Début du message réexpédié :
>
>> De : Réjean Lamy <rejean.lamy at mac.com>
>> Date : 22 avril 2009 19:05:40 HAE
>> À : BaseTen-Users <baseten-users at lists.basetenframework.org>
>> Objet : Rép : [baseten-users] Using relationships with binding
>>
>> Thanks for the quick feedback Tuukka
>>
>> Following your recommendations and using the key name  
>> "public_Employee_department" (instead of the model name "employees"  
>> relationship) now all binding are ok.
>> Looking forward for version 1.6.3 with more examples.
>>
>> Thanks !
>>
>> Rejean Lamy
>>
>>
>>
>>
>> Le 09-04-22 à 08:54, Tuukka Norri a écrit :
>>
>>> Hi!
>>>
>>> Réjean Lamy kirjoitti 21.4.2009 kello 15.43:
>>>> The first problem  was with one-to-many relationship field and  
>>>> NULL value. I  manually edited the table to allow the  
>>>> relationship field to accept NULL.
>>> This is a bug in BaseTen Assistant (http://basetenframework.org/ticket/179 
>>> ). It should be fixed in SVN trunk but we'd like to do some more  
>>> tests.
>>>
>>>> But now my second problem is about using relationship with binding.
>>>>
>>>> Is it correct with BX to use Array Controllers for the  
>>>> ManagerPopUP, EmployeeList (Department View) and DeptPopUp  
>>>> (Employee View) ?
>>> Yes. You'll probably want to use BXSynchronizedArrayControllers,  
>>> though, since they are able to fetch objects from the database and  
>>> change their content based on notifications received from the  
>>> database.
>>>
>>>> Is It ok for these controllers  to be in "Entity mode" with  
>>>> "Automatically Prepare Content ?
>>> No. BXSynchronizedArrayController shouldn't even expose these  
>>> options. Instead, it does have an option called “Fetch on  
>>> Connect”; it does work quite the same way as Automatically Prepare  
>>> Content, though.
>>>
>>>> What is the correct binding for these controllers ?
>>> They should be bound like in Hillegass's example. The Managed  
>>> Object Context binding isn't used (and isn't available), but  
>>> databaseContext outlet needs to be connected.
>>>
>>>> What is the correct key path for a relationship ? (trying the  
>>>> Data Model name and the "other table" name don't work).
>>> In BaseTen 1.6.2 one could use the target table's name to  
>>> reference a relationship, if that particular relationship is the  
>>> only one between the tables. Obviously this won't work in the  
>>> Department-Employee example. The foreign keys' names can also be  
>>> used (see sections 2.2.1 and 2.2.2 in the manual), but for BaseTen  
>>> 1.6.3 we changed this a bit so that both the relationship's and  
>>> the inverse relationship's name will work as specified in the  
>>> Xcode data model.
>>>
>>> We'll probably add some functionality to list the relationships  
>>> into BaseTen Assistant. Meanwhile, there is a command-line tool  
>>> called Introspection in our source repository (see http://basetenframework.org/browser/trunk/Examples/Introspection) 
>>>  for this purpose.
>>>
>>> We'll write some more examples as soon as we're done with version  
>>> 1.6.3!
>>> -- 
>>> Best regards,
>>> Tuukka Norri
>>> MK&C
>>>
>>> _______________________________________________
>>> baseten-users mailing list
>>> baseten-users at lists.basetenframework.org
>>> http://lists.basetenframework.org/mailman/listinfo/baseten-users
>>
>




More information about the baseten-users mailing list