iPhone Objective C - 错误:指向预期浮点值的指针值

时间:2010-06-01 17:25:22

标签: iphone objective-c

我不明白为什么我会收到此错误。以下是相关代码:

Photo.h

#import <CoreData/CoreData.h>

@class Person;

@interface Photo :  NSManagedObject  
{
}

@property (nonatomic, retain) NSData * imageData;
@property (nonatomic, retain) NSNumber * Latitude;
@property (nonatomic, retain) NSString * ImageName;
@property (nonatomic, retain) NSString * ImagePath;
@property (nonatomic, retain) NSNumber * Longitude;
@property (nonatomic, retain) Person * PhotoToPerson;

@end

Photo.m

#import "Photo.h"

#import "Person.h"

@implementation Photo 

@dynamic imageData;
@dynamic Latitude;
@dynamic ImageName;
@dynamic ImagePath;
@dynamic Longitude;
@dynamic PhotoToPerson;

@end

这是我创建的mapViewController.m类。如果我运行它,CLLocationDegrees CLLat和CLLong行:

                CLLocationDegrees CLLat = (CLLocationDegrees)photo.Latitude;    
                CLLocationDegrees CLLong = (CLLocationDegrees)photo.Longitude;

给我错误:在预期浮点值的地方使用指针值。

for(int i = 0; i < iPerson; i++)
        {
            //get the person that corresponds to the row indexPath that is currently being rendered and set the text
            Person * person = (Person *)[myArrayPerson objectAtIndex:i];
            //get the photos associated with the person
            NSArray * PhotoArray =  [person.PersonToPhoto allObjects];
            int iPhoto = [PhotoArray count];

        for(int j = 0; j < iPhoto; j++)
        {
            //get the first photo (all people will have atleast 1 photo, else they will not exist). Set the image
            Photo * photo = (Photo *)[PhotoArray objectAtIndex:j];

            if(photo.Latitude != nil && photo.Longitude != nil)
            {
                MyAnnotation *ann = [[MyAnnotation alloc] init];
                ann.title = photo.ImageName;
                ann.subtitle = photo.ImageName;

                CLLocationCoordinate2D cord;                    
                CLLocationDegrees CLLat = (CLLocationDegrees)photo.Latitude;    
                CLLocationDegrees CLLong = (CLLocationDegrees)photo.Longitude;

                cord.latitude = CLLat;
                cord.longitude = CLLong;

                ann.coordinate = cord;
                [mkMapView addAnnotation:ann];              

            }       
        }   
    }

1 个答案:

答案 0 :(得分:5)

NSNumber不是浮点类型,而是指针,所以你需要这样做才能转换它:

CLLocationDegrees CLLat = (CLLocationDegrees)[photo.Latitude doubleValue];    
CLLocationDegrees CLLong = (CLLocationDegrees)[photo.Longitude doubleValue];