Re: Deleting CalTasks through an Array.

2009-10-01 Thread Stamenkovic Florijan

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.

2009-10-01 Thread Joshua Garnham
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.

2009-09-30 Thread Joshua Garnham
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.

2009-09-30 Thread Mike Abdullah


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.

2009-09-30 Thread Stamenkovic Florijan


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