关于ios:无法从公共可变数组(Objective-C)中删除对象

Can't remove an object from public mutable array (Objective-C)

该程序理论上应通过单击来加载带有图像的随机字符串。 这项工作正常,但我想添加一个从两个数组中删除当前对象的函数,因此我将所有数组和整数公开(对吗?),并为数组制作了可变副本。 然后我在底部写了三行,Xcode显示了这一点:

No visible @interface for 'NSArray' declares the selector
'removeObjectAtIndex'

这是什么意思? 如何解决?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  #import"KotikViewController.h"

@interface KotikViewController (){
    NSArray *movieNames;
    NSArray *movieCovers;
    NSArray *movieNamesMutableCopie;
    NSArray *movieCoversMutableCopie;
    NSInteger yourRandomIndex;
}

@end

@implementation KotikViewController

- (IBAction)showNewMovie:(id)sender {
    movieNames =@[@"Побег из шаушенка", @"Бэтмен:Начало", @"Форрест Гамп"];
    movieCovers= @[@"shawshank.jpg", @"batmanone.jpg", @"forrest.jpg"];
    movieNamesMutableCopie=[movieNames mutableCopy];
    movieCoversMutableCopie=[movieCovers mutableCopy];


    //Setting a randomindex for movie
    yourRandomIndex = arc4random_uniform(movieNamesMutableCopie.count);

    //Getting imageName and movieName at randomIndex
    NSString* movieName= movieNamesMutableCopie[yourRandomIndex];
    NSString* movieCover= movieCoversMutableCopie[yourRandomIndex];

    //Setting  ImageView image and movieName in a label from strings
    [_movieCover setImage:[UIImage imageNamed:movieCover]];
    _movieName.text = movieName;
   ;
}

- (IBAction)alreadyWatched:(id)sender {
    [movieNamesMutableCopie removeObjectAtIndex:yourRandomIndex];
}
@end

NSArray不是可变副本。 即您不能添加或删除项目。 您应该改用NSMutableArray

您的私有变量(和公共变量?)应该像这样更改

1
2
3
4
NSArray *movieNames;
NSArray *movieCovers;
NSMutableArray *movieNamesMutableCopie;
NSMutableArray *movieCoversMutableCopie;