[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