2012-06-16 59 views
0

我已经构建了一个对象数组,这是从我之前编写的一个类创建的。我只是想获得一些类变量,而通过数组循环:不良访问代码1:访问对象实例变量

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 

     NSMutableArray *medicalCenters = [(AppDelegate *)[[UIApplication sharedApplication] delegate] medicalCenters]; 

     for (MedicalCenter *row in medicalCenters){ 
      NSString *latitude = row.MCLatitude; 
      NSLog(@"%@", latitude); 
     } 
} 

我创建这个样子的类文件:

#import <Foundation/Foundation.h> 
#import <MapKit/MapKit.h> 

@interface MedicalCenter : NSObject 
{ 
    CLLocationCoordinate2D _coordinate; 
} 

@property (nonatomic, strong) NSString *medicalCenter; 
@property (nonatomic, assign) NSString *MCLatitude; 
@property (nonatomic, assign) NSString *MCLongitude; 
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

- (id)initWithName:(NSString *)medicalCenter coordinate:(CLLocationCoordinate2D)coordinate; 

@end 

每当我建立起来的NSString *latitude = row.MCLatitude,我得到了该消息: Bad_excess代码:1

但是,当我只列出阵列medicalCenters中的对象,我可以看到他们所有............ 我错过了重要的东西吗?

感谢 塞巴斯蒂安

+1

为什么在'MCLatitude'和'MCLongitude'中使用'assign'? –

回答

1

这是因为记性不好管理,MCLatitudeMCLongitude属性设置与(分配),他们没有被正确地保留,不知道你将它们设置为分配的原因,没有我能看到的理由,所以如果你将它们改为强大的,并使用setter来赋值,那应该没问题。

@property (nonatomic, strong) NSString *MCLatitude; 
@property (nonatomic, strong) NSString *MCLongitude; 
+0

谢谢你们......在我将MCLatitude作为字符串var之前,我将它声明为int。因此具有分配属性。我只是改变了代码,现在它工作得很好!谢谢大家 – konturgestaltung

+1

对于NSString,你通常应该使用'copy'而不是'strong'。如果另一个类也有一个指向同一个字符串的指针并进行更改,则不希望字符串值意外更改。经验法则是,对于任何具有可变对象(即NSMutableString,NSMutableArray)的类,您都应该“复制”它们。 – afrederick