2016-02-04 3 views
-2

Объекты NSImageView один раз в массиве становятся строками. Как преобразовать их в NSImageView, чтобы избежать непризнанной ошибки выбора, сгенерированной последней строкой?Неопознанный селектор с объектами массива.

NSArray *array = [NSArray arrayWithObjects: @"chip1”, @"chip2” nil], 
for (id image in array) { 
[image setImage: nil]; 
} 

ответ

0

@"..." обозначения в Objective-C является сокращением для создания NSString. В приведенном выше примере кода вы создаете массив из NSString, поэтому вы вызываете ошибку unrecognized selector при вызове setImage:.

Предполагая chip1 и chip2 являются экземплярами NSImageView, вы должны делать следующее:

NSArray *array = [NSArray arrayWithObjects:chip1, chip2, nil]; 

Вы можете избежать проблем, как это в будущем, с помощью Objective-C Generics при определении вашего массива:

NSArray <NSImageView*>*array = [NSArray arrayWithObjects:chip1, chip2, nil]; 

Это даст ошибку компилятора, если вы попытаетесь добавить класс к другому, который NSImageView в массив.

+0

Спасибо Винни. Оно работало завораживающе. – user3298247

+0

Отлично. Пожалуйста, отметьте как ответ. Благодаря! –