I must be doing something really obviously wrong, but I can't see it.

I must be doing something really obviously wrong, but I can't see it.

A double is a C type, not an Objective-C object. Hence you use C casts:
double myDouble = 3.2;
int myInt = (int)myDouble;
Just converting mentioned above is good enough though you might want to use floor() or ceil() functions before that.
intValue is a method for a NSNumber instance. For scale type like int, double, and float, they are not class type. So, they have no methods. Some languages like C# may wrap int, or double as a object, and they can be transfered to each other by a sub-routine.