NSMutableArray中没有已知的选择器错误实例方法

时间:2012-07-02 19:13:32

标签: iphone objective-c xcode nsmutablearray

我在访问数组中的对象时遇到问题。我将“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。多米尼克

2 个答案:

答案 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