CGPathAddCurveToPoint adds a cubic curve to the bezier path. In the case you don't know it, it's made in a way that the shape of the curve is determined by two control points (uses a third grade equation for the curve). If you want the curve to have a particular shape, then you need to calculate two intermediate points, biased on the value of the path current point, and the curve end point. If instead you don't care about having a curve with a particular shape, you can just pick some random points. This is an implementation example:
for (int i=1; i < coordinates.count; i++)
{
point = [[coordinates objectAtIndex:i] CGPointValue];
CGPathAddCurveToPoint(path, 0, randomX(), randomY(), randomX(), randomY(), point.x, point.y);
}
I see the you used CGPath, but you can also use OOP with UIBezierPath instead of CGPath, if you find it easier to use.