On Jun 5, 2007, at 6:29 PM, Mac Campbell wrote:

Chuck your brilliant,

I apologize for not picking up on this sooner, I have stepped away from this project for at least a few months, so now I am coming back to it and ... learning as I go again...

Chuck is absolutely right it has to do with my method of inserting the tags... below is an excerpt for how I deal with the tag, if it's a net new tag or if it's an existing tag...

We might have a terminology difference here and some context information would help. I am guessing that you are letting the user enter some text (tempString) for a Tag to tag a post with. Either it matches an existing tag, or you create a new one. Am I close?


if it is a brand new tag it uses the addObjectToBothSidesOfRelationshipWithKey and as Chuck predicts that works fine, however if it's an existing tag no such luck... until the app is stopped and started... I came up with this hair brain scheme to avoid having multiple entrees of the same tag in the tag table... using addObjectToBothSidesOfRelationshipWithKey adds the tag whether or not it's already in the table..

It certainly should not! addObjectToBothSidesOfRelationshipWithKey should work and should be used in either case. I suspect something else is wrong. Perhaps your model is not correct. Have you added any code to BlogEntry that is manipulating tags?


any better ideas about how to over come this? Thanks again. (It's a many to many relationship that I let webobjects magic build the intermediary table for... tagmaps)

        // if we find a positive result for our search
        if(result.count() > 0) {
// grab that existing tag and add it to BlogEntrys tagss relationship for newEntry

Yesss, my precioussssss. :-P Entity names should not get pluralized. That avoids names like BlogEntrys tagss and gives names like BlogEntry tags. Unless you are aiming for a nickname of Golem...


            Tags existingTag = new Tags();
That line is not needed


            existingTag = (Tags)result.objectAtIndex(0);
            newEntry.addObjectToPropertyWithKey(existingTag, "tagss");

That _should_ work with addObjectToBothSidesOfRelationshipWithKey



                } else {

            //if there is no positive result, add new Tag normally
EOEnterpriseObject newTag = EOUtilities.createAndInsertInstance(ec, "Tags");
            newTag.takeValueForKey(tempString, "desc");

Eewwww! That is misusing / abusing KVC. You _can_ do that, but it makes your code brutal ugly and hard to read.

newTag.setDesc(tempString);


newEntry.addObjectToBothSidesOfRelationshipWithKey (newTag, "tagss");
            }


Still not sure what is wrong, but it lies elsewhere.


Chuck




> CC: [EMAIL PROTECTED]
> From: [EMAIL PROTECTED]
> Subject: Re: My first web app... (still)
> Date: Tue, 5 Jun 2007 10:00:46 -0700
> To: webobjects-dev@lists.apple.com
>
>
> On Jun 4, 2007, at 10:14 PM, Mac Campbell wrote:
>
> > Hello all,
> >
> > Maybe you can help me out with another question...
> >
> > I am working on a blog app as my first app... I have 3 major
> > outstanding issues the major one that I am most lost on is... my
> > tag system does not increment the tag counts right away... the only
> > way the tag area shows the correct number of tags (for newly added
> > tags, in debug mode) is for me to stop and start the app (in Xcode
> > newest / last version) and start it again, although added blog
> > posts do appear in the blog posts list...
>
> The primary cause of this is not correctly updating the object graph
> when adding new objects. How are you adding the tag? You should be
> using the addObjectToBothSidesOfRelationshipWithKey method. Or, as
> Mike will soon say, use Wonder and his EOGenerator templates from the
> WO wiki so that you don't have to remember to do this. For you, for
> now, I would just use that method.
>
>
> > I have the WO Repetition that goes through my array of tagEntries
> > displaying each unique tagEnumerator pertinent code below on the
> > main page:
> >
> > public NSArray tagEntries()
> > {
> >
> > tagEnumerator = null;
> > tEntrys = null;
> > //EOEditingContext ec3 = new EOEditingContext();
> > BlogEntry blogEntrys = new BlogEntry();
> > EOFetchSpecification fs =
> > EOFetchSpecification.fetchSpecificationNamed("tagsDescending",
> > "Tags");
>
>
> > NSArray keypaths = new NSArray();
> > keypaths = keypaths.arrayByAddingObject("blogEntrys");
> >
> > //keypaths = "blogEntrys";
> > fs.setPrefetchingRelationshipKeyPaths(keypaths);
>
> Not related, but you are writing too much code;
>
> fs.setPrefetchingRelationshipKeyPaths(new NSArray("blogEntrys"));
>
> You might also want
>
> fs.setRefreshesRefetchedObjects(true);
>
>
> > NSArray tEntrys= new NSMutableArray(ec
> > ().objectsWithFetchSpecification(fs));
> > return tEntrys;
> > }
> >
> > After a new blog post is added (on the addPost page) the main page
> > is called:
> >
> > ....
> > // commit the changes made to the objects in the editing
> > context to the database
> > ec.saveChanges();
> >
> > // refresh the page by fetching the page without recreating
> > a new session
> > //Main nextPage = (Main)pageWithName("Main");
> > return pageWithName("Main");
> > }
> >
> > The thing in WO Repitetion doing the actual count is
> > "[EMAIL PROTECTED]"
> >
> > Any ideas? It only shows an accurate count when you first start up
> > the app...?
> >
> > Thanks,
> >
> > Mac
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com)
> > Help/Unsubscribe/Update your Subscription:
> > http://lists.apple.com/mailman/options/webobjects-dev/chill%
> > 40global-village.net
> >
> > This email sent to [EMAIL PROTECTED]
>
> --
>
> Practical WebObjects - for developers who want to increase their
> overall knowledge of WebObjects or who are trying to solve specific
> problems.
> http://www.global-village.net/products/practical_webobjects
>
>
>
>
>

--

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects





_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to