我在访问数组中的对象时遇到问题。我将“Place”对象存储在我的NSMutableArray中。我想为我的TableView访问这个数组。我在第一行得到“没有已知的选择器实例方法”错误。见下面的行。
cell.imageView = [[self.currentPlaces objectAtIndex:indexPath.row]picture];
cell.subtitleLB.text = [[self.currentPlaces objectAtIndex:indexPath.row]description];
cell.objectNameLB.text = [[self.currentPlaces objectAtIndex:indexPath.row]name];
这是我的Place对象:
@interface Place : NSObject{
CLLocation *objectLocation;
UIImageView *picture;
NSString *name;
NSString *description;
}
访问属性“description”和“name”没有问题。我只是不知道为什么会出现这种错误。
THX。多米尼克
答案 0 :(得分:2)
我有同样的问题;对我有用的是传递UIImage而不是UIImageView。所以你的代码应该是这样的:
@interface Place : NSObject{
CLLocation *objectLocation;
UIImage *picture;
NSString *name;
NSString *description;
}
和这个
cell.imageView.image = [[self.currentPlaces objectAtIndex:indexPath.row]picture];
cell.subtitleLB.text = [[self.currentPlaces objectAtIndex:indexPath.row]description];
cell.objectNameLB.text = [[self.currentPlaces objectAtIndex:indexPath.row]name];
如果这不起作用,我会发布更多代码供你查看。
答案 1 :(得分:2)
您实际上没有声明任何方法。你声明的是实例变量。您应该使用@property
代替。
@interface Place : NSObject
@property (nonatomic, retain) CLLocation *objectLocation;
@property (nonatomic, retain) UIImageView *picture;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy, getter=objectDescription) NSString *description;
@end
这实际上会创建您想要的方法。请注意,我将description
属性的方法更改为-objectDescription
。这是因为NSObject
已经声明了-description
方法,您不应该用不相关的属性覆盖它。
如果你是最近的Clang,那么这就是你所需要的,实例变量将自动合成(使用下划线前缀,例如_picture
)。如果您使用的是旧版本(例如,如果这会导致错误),则需要添加@synthesize
行,如
@implementation Place
@synthesize objectLocation=_objectLocation;
@synthesize picture=_picture;
@synthesize name=_name;
@synthesize description=_description;
@end