Skip navigation.
 
mlRe: getting the selected object from an NSTableView causes problems
FROM : Daniel Richman
DATE : Sat Jun 21 17:23:45 2008

That's it! Thanks!

Daniel


Charles Srstka wrote:
> Don't do this:
>
> NSLog(@"selected row: %@", [tableView selectedRow]);
>
> Instead, do this:
>
> NSLog(@"selected row: %u", [tableView selectedRow]);
>
> Trying to interpret an int as an object is what's causing your crash.
>
> Charles
>
> On Jun 21, 2008, at 10:13 AM, Daniel Richman wrote:
>

>> Thanks! I don't know why they introduced NSInteger. It sounds like it
>> would be a subclass of NSNumber.
>>
>> That didn't seem to be the problem, though. The program still crashes
>> only when you aren't deleting the first item. I made a movie of it;
>> it's at http://danielrichman.com/tmp/ToDoList_Problem.mov .
>>
>> Thanks,
>> Daniel
>>
>>
>> Graham Cox wrote:

>>> I ran into a very similar problem just today.
>>>
>>> There is an error in your code though, unrelated to my problem, but
>>> is probably yours:
>>>

>>>> int selectedRow = [((NSNumber *)[tableView selectedRow]) intValue];

>>>
>>>
>>> -selectedRow simply returns an int, so all that casting to an
>>> NSNumber* and fetching its -intValue is bogus. You want:
>>>
>>> int selectedRow = [tableView selectedRow];
>>>
>>> (Aside: I think the addition in Leopard of the NSInteger data type
>>> is confusing a lot of people - it's just a typedef for 'int', it's
>>> not an object, and definitely not an NSNumber. But I've seen a few
>>> errors confusing the two lately that didn't seem to happen before).
>>>
>>> hth,
>>>
>>>
>>> Graham
>>>
>>>
>>>
>>>
>>> On 21 Jun 2008, at 12:51 pm, Daniel Richman wrote:
>>>

>>>> I've got an NSTableView that displays the data in an
>>>> NSMutableArray. (The program is a to-do list.) I just tried adding
>>>> a function to allow you to delete an item: you select the item in
>>>> the table and then click delete. My code is as follows:
>>>>
>>>> - (IBAction)deleteItem:(id)sender
>>>> {
>>>>  int selectedRow = [((NSNumber *)[tableView selectedRow]) intValue];
>>>>  NSLog(@"Selected row is %d", selectedRow);
>>>>    if (selectedRow != -1) {
>>>>      NSLog(@"Deleting '%@'", [toDoList objectAtIndex:selectedRow]);
>>>>      [toDoList removeObjectAtIndex:selectedRow];
>>>>      [tableView reloadData];
>>>>  }
>>>> }
>>>>
>>>> The problem is that if I try to delete any item other than the very
>>>> first one (index 0), the program crashes. I did some log work,
>>>> which revealed that the first line is causing problems (int
>>>> selectedRow...). But that doesn't explain why the deleting the
>>>> first item works ok. I'm stumped. Any ideas?

>>>

>> _______________________________________________
>>
>> Cocoa-dev mailing list (<email_removed>)
>>
>> 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/<email_removed>
>>
>>
>> This email sent to <email_removed>

>

Related mailsAuthorDate
mlgetting the selected object from an NSTableView causes problems Daniel Richman Jun 21, 04:51
mlRe: getting the selected object from an NSTableView causes problems Graham Cox Jun 21, 05:11
mlRe: getting the selected object from an NSTableView causes problems Daniel Richman Jun 21, 17:13
mlRe: getting the selected object from an NSTableView causes problems Charles Srstka Jun 21, 17:19
mlRe: getting the selected object from an NSTableView causes problems Daniel Richman Jun 21, 17:23
mlRe: getting the selected object from an NSTableView causes problems Nick Zitzmann Jun 21, 21:24
mlRe: getting the selected object from an NSTableView causes problems Daniel Richman Jun 21, 21:31