Skip navigation.
 
mlRe: getting the selected object from an NSTableView causes problems
FROM : Charles Srstka
DATE : Sat Jun 21 17:19:47 2008

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