Re: Deleting CalTasks through an Array.
Hi Joshua, You're welcome, but you need to also learn some stuff on your own. 1. Browse the docs: NSArray does not have a contains: method, it has a containsObject: method. My mistake, but one that's easy to spot. 2. Check the method signatures for CalCalendar store. I believe I gave you the right ones (in which case your imports are somehow messed up). If I gave you the wrong ones, change them. Also please keep all communication *on* the list. F On Oct 01, 2009, at 01:54, Joshua Garnham wrote: Thanks! I've got a few warnings though : http://snapplr.com/zm6w. Especially with the NSPredicate. From: Stamenkovic Florijan flor...@mac.com To: Joshua Garnham joshua.garn...@yahoo.co.uk Cc: cocoa-dev@lists.apple.com Sent: Wednesday, 30 September, 2009 20:24:59 Subject: Re: Deleting CalTasks through an Array. On Sep 30, 2009, at 12:32, Joshua Garnham wrote: I have an Array of strings and want to remove CalTasks with titles of any of the strings. I know I can loop through a array with for(NSString *title in array) { } and delete tasks with removeTask:title error:nil But it won't let me delete a CalTask object with the strings from the Array instead it wants the actual CalTask object.How would I delete a CalTask object by matching it's title to a string in an array? Joshua, You need to use CalCalendarStore's method taskPredicateWithCalendar, passing it all calendars to get the tasks, then compare titles and delete if necessary. // make a predicate for all tasks NSPredicate* allCalendarsTaskPredicate = [CalCalendarStore taskPredicateWithCalendar:[CalCalendarStore calendars]]; // fetch all the tasks NSArray* allTasks = [[CalCalendarStore defaultCalendarStore] tasksWithPredicate:allCalendarsTaskPredicate]; // delete them for(CalTask* task in allTasks) if([arrayOfTitles contains:tast.title]) // delete task More or less... Sorry for the typos, I am writing directly to mail. What would be more efficient and *might* work is creating a compound predicate out of the allTasks predicate and a predicate that would discriminate tasks that don't have a matching title. However, I am not sure that predicate would work with the CalendarStore. Something to explore if the performance is an issue. HTH F ___ 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
Re: Deleting CalTasks through an Array.
Hi, Thanks, It works now I've fixed the warnings. Cheers. From: Stamenkovic Florijan flor...@mac.com To: Joshua Garnham joshua.garn...@yahoo.co.uk Cc: cocoa-dev cocoa-dev@lists.apple.com Sent: Thursday, 1 October, 2009 13:32:20 Subject: Re: Deleting CalTasks through an Array. Hi Joshua, You're welcome, but you need to also learn some stuff on your own. 1. Browse the docs: NSArray does not have a contains: method, it has a containsObject: method. My mistake, but one that's easy to spot. 2. Check the method signatures for CalCalendar store. I believe I gave you the right ones (in which case your imports are somehow messed up). If I gave you the wrong ones, change them. Also please keep all communication *on* the list. F On Oct 01, 2009, at 01:54, Joshua Garnham wrote: Thanks! I've got a few warnings though : http://snapplr.com/zm6w. Especially with the NSPredicate. From: Stamenkovic Florijan flor...@mac.com To: Joshua Garnham joshua.garn...@yahoo.co.uk Cc: cocoa-dev@lists.apple.com Sent: Wednesday, 30 September, 2009 20:24:59 Subject: Re: Deleting CalTasks through an Array. On Sep 30, 2009, at 12:32, Joshua Garnham wrote: I have an Array of strings and want to remove CalTasks with titles of any of the strings. I know I can loop through a array with for(NSString *title in array) { } and delete tasks with removeTask:title error:nil But it won't let me delete a CalTask object with the strings from the Array instead it wants the actual CalTask object.How would I delete a CalTask object by matching it's title to a string in an array? Joshua, You need to use CalCalendarStore's method taskPredicateWithCalendar, passing it all calendars to get the tasks, then compare titles and delete if necessary. // make a predicate for all tasks NSPredicate* allCalendarsTaskPredicate = [CalCalendarStore taskPredicateWithCalendar:[CalCalendarStore calendars]]; // fetch all the tasks NSArray* allTasks = [[CalCalendarStore defaultCalendarStore] tasksWithPredicate:allCalendarsTaskPredicate]; // delete them for(CalTask* task in allTasks) if([arrayOfTitles contains:tast.title]) // delete task More or less... Sorry for the typos, I am writing directly to mail. What would be more efficient and *might* work is creating a compound predicate out of the allTasks predicate and a predicate that would discriminate tasks that don't have a matching title. However, I am not sure that predicate would work with the CalendarStore. Something to explore if the performance is an issue. HTH F ___ 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
Deleting CalTasks through an Array.
I have an Array of strings and want to remove CalTasks with titles of any of the strings. I know I can loop through a array with for(NSString *title in array) { } and delete tasks with removeTask:title error:nil But it won't let me delete a CalTask object with the strings from the Array instead it wants the actual CalTask object.How would I delete a CalTask object by matching it's title to a string in an array? Cheers. ___ 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
Re: Deleting CalTasks through an Array.
On 30 Sep 2009, at 17:32, Joshua Garnham wrote: I have an Array of strings and want to remove CalTasks with titles of any of the strings. I know I can loop through a array with for(NSString *title in array) { } and delete tasks with removeTask:title error:nil But it won't let me delete a CalTask object with the strings from the Array instead it wants the actual CalTask object.How would I delete a CalTask object by matching it's title to a string in an array? The API accepts CalTask objects. Logically then you need to fetch such objects from the store using the APIs provided. i.e. - tasksWithPredicate: ___ 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
Re: Deleting CalTasks through an Array.
On Sep 30, 2009, at 12:32, Joshua Garnham wrote: I have an Array of strings and want to remove CalTasks with titles of any of the strings. I know I can loop through a array with for(NSString *title in array) { } and delete tasks with removeTask:title error:nil But it won't let me delete a CalTask object with the strings from the Array instead it wants the actual CalTask object.How would I delete a CalTask object by matching it's title to a string in an array? Joshua, You need to use CalCalendarStore's method taskPredicateWithCalendar, passing it all calendars to get the tasks, then compare titles and delete if necessary. // make a predicate for all tasks NSPredicate* allCalendarsTaskPredicate = [CalCalendarStore taskPredicateWithCalendar:[CalCalendarStore calendars]]; // fetch all the tasks NSArray* allTasks = [[CalCalendarStore defaultCalendarStore] tasksWithPredicate:allCalendarsTaskPredicate]; // delete them for(CalTask* task in allTasks) if([arrayOfTitles contains:tast.title]) // delete task More or less... Sorry for the typos, I am writing directly to mail. What would be more efficient and *might* work is creating a compound predicate out of the allTasks predicate and a predicate that would discriminate tasks that don't have a matching title. However, I am not sure that predicate would work with the CalendarStore. Something to explore if the performance is an issue. HTH F ___ 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