deleting selected rows

I have a four column table in which the third column contains a checkbox. The user can select the check box and carry out a variety of operations on the selected rows, one of which is to simply delete the selected rows.

At the moment I use this which works fine but I can’t help but think there should be a better way.

on deleteAllSelected_(sender)
		set theArraysRows to theArrayController's arrangedObjects()
		
		set theCount to count of theArraysRows
		--	log theCount
		repeat with n from 1 to theCount
			set theTableItemsObject to theArraysRows's objectAtIndex_(n - 1) as list
			
			set therecord to item 1 of theTableItemsObject as list
			
			set theselection to item 1 of therecord
			log theselection
			if theselection = true then
				
				tell theArrayController to removeObjectAtArrangedObjectIndex_(n - 1)
			end if
		end repeat
		
	end deleteAllSelected_

I can use

set aPredicate to current application's class "NSPredicate"'s predicateWithFormat_("isSelected = 1")
set theTableItems to theArraysRows's filteredArrayUsingPredicate_(aPredicate)

To identify the selected rows, but how do I get arrangedObjects Indexes? I must be missing something simple?

Hi,

NSArrayController has a removeObjects: method. The filtered array contains the selected objects which represent the rows.
try this


set aPredicate to current application's class "NSPredicate"'s predicateWithFormat_("isSelected = 1")
set theTableItems to theArraysRows's filteredArrayUsingPredicate_(aPredicate)
tell theArrayController to removeObjects_(theTableItems)

Awesome!

I thought I had tried that but I must have had a typo.