The error you are getting is indicating that it can't convert the id of the NSValue to a CGPoint. There is a similar discussion at this link:
How can I add CGPoint objects to an NSArray the easy way?
What you need to do is get the CGPoint back from the NSValue. NSValue provides the CGPointValue for this very situation. So, from the NSValue you get back from the NSArray you would call the CGPointValue method to get you the last step. If you had an NSArray named array and a C4Shape named Square you could do this:
Square.center = [array[randomInteger] CGPointValue];
Where randomInteger would be some integer that you picked somewhere else.