On 9 May 2012, at 1:09 PM, Alex Zavatone wrote:
> Back on iterating through a mapKit annotation array, I'm bending my brain
> cell on this one.
>
> All my annotations are instances of the MyLocation class
>
> I added a method to expose the properties I want to save by returning a dict
> to the class.
>
> After all annotations are added, and I want to walk the array and build an
> array of annotations, I do this:
>
> - (IBAction)saveData:(id)sender
> {
> for (NSDictionary * myAnnotation in self.mapView.annotations)
Assuming .mapView is an MKMapView, then .annotations is an NSArray of objects
that conform to <MKAnnotation>. From what you say, the objects in the array are
of class MyLocation, which I gather is not a subclass of NSDictionary. (Leave
aside that subclassing NSDictionary is ill-advised.)
Therefore your declaration of the myAnnotation loop variable is mistaken:
Whether you declare the object pointer to be an NSDictionary or not, in point
of fact the object itself is a MyAnnotation. Objective-C has no C++-like
concept of producing new, converted objects upon casting.
> {
> MyLocation *tempLocation = [[MyLocation alloc] init ];
>
> // test that the methods in the MyLocation objects
> actually work on an empty object
> NSString *myString = [tempLocation name];
> NSDictionary *myDict = [tempLocation
> returnCoordinatesInDict];
> NSDictionary *myStuffDict = [tempLocation
> returnPropertiesInDict];
> // Try it with one of the MyLocation objects in the
> annotation array
> NSDictionary *myGoodsDict = [myAnnotation
> returnPropertiesInDict];
>
> Xcode will not let the last line compile with a "Receiver type 'NSDictionary'
> for instance message does not declare a method with selector
> 'returnPropertiesInDict'
>
> But if I comment out that line, set a breakpoint, it clearly shows that
> myAnnotation is a myLocation instance just like tempLocation.
Yes: a MyLocation. Not an NSDictionary. But you told the compiler that
myAnnotation is an NSDictionary (even though it isn't), and it doesn't know
anything different. NSDictionary does not declare a -returnPropertiesInDict
method, and that's what the compiler is complaining about.
— F
--
Fritz Anderson -- Xcode 4 Unleashed: Due 21 May 2012 --
<http://x4u.manoverboard.org/>
_______________________________________________
Cocoa-dev mailing list ([email protected])
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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]