Ios NSArrayM insertObject中的异常:atindex

Ios NSArrayM insertObject中的异常:atindex,ios,nsarray,Ios,Nsarray,我在project中使用了4个图像。运行时,结果如下: *由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'*-[\uu NSArrayM insertObject:atIndex:]:对象不能为零' ***第一次抛出调用堆栈: 我的代码: NSArray *imageNames= @[@"jake_2.png",@"jake_3.png",@"jake_4.png",@"jake_5.png "]; // Do any additional setu

我在project中使用了4个图像。运行时,结果如下:

*由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'*-[\uu NSArrayM insertObject:atIndex:]:对象不能为零' ***第一次抛出调用堆栈:

我的代码:

NSArray *imageNames= @[@"jake_2.png",@"jake_3.png",@"jake_4.png",@"jake_5.png "];
// Do any additional setup after loading the view, typically from a nib.
NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++)
{
    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
    UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
    slowAnimationImageView.animationImages = images;
    slowAnimationImageView.animationDuration = 5;
    [self.view addSubview:slowAnimationImageView];
    [slowAnimationImageView startAnimating];
}
NSArray*imageNames=@[@“jake_2.png”、@“jake_3.png”、@“jake_4.png”、@“jake_5.png”];
//加载视图后,通常从nib执行任何其他设置。
NSMutableArray*图像=[[NSMutableArray alloc]init];
对于(int i=0;i
您面临问题,因为您在数组中提供的imageName在参考资料中不可用。检查数组中的最后一个对象:@“jake_5.png”。里面有额外的空间。请把它拿走。这就是导致这个问题的原因

更新:

对于动画,需要在将所有图像添加到imageArray中后进行设置。请参阅此代码以获取帮助并进行更改:

NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++)
{
    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}

slowAnimationImageView.animationImages = images;
slowAnimationImageView.animationDuration = 5;
[slowAnimationImageView startAnimating]; 
NSMutableArray*images=[[NSMutableArray alloc]init];
对于(int i=0;i

希望对您有所帮助…

您面临的问题是,您在阵列中提供的imageName在参考资料中不可用。检查数组中的最后一个对象:@“jake_5.png”。里面有额外的空间。请把它拿走。这就是导致这个问题的原因

更新:

对于动画,需要在将所有图像添加到imageArray中后进行设置。请参阅此代码以获取帮助并进行更改:

NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++)
{
    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}

slowAnimationImageView.animationImages = images;
slowAnimationImageView.animationDuration = 5;
[slowAnimationImageView startAnimating]; 
NSMutableArray*images=[[NSMutableArray alloc]init];
对于(int i=0;i

希望对您有所帮助……

最后一张图片的名称与空格之间没有什么错误

 NSArray *imageNames= @[@"jake_2.png",@"jake_3.png",@"jake_4.png",@"jake_5.png"];
    // Do any additional setup after loading the view, typically from a nib.
    NSMutableArray *images = [[NSMutableArray alloc] init];
    for image in imagesNames
    {
        [images addObject:[image];
        UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
        slowAnimationImageView.animationImages = images;
        slowAnimationImageView.animationDuration = 5;
        [self.view addSubview:slowAnimationImageView];
        [slowAnimationImageView startAnimating];
    }

但是,如果您不想像这样添加for循环,请使用方法addObjectOfArray将对象追加到可变数组中

最后一幅图像的名称与空格几乎没有错误

 NSArray *imageNames= @[@"jake_2.png",@"jake_3.png",@"jake_4.png",@"jake_5.png"];
    // Do any additional setup after loading the view, typically from a nib.
    NSMutableArray *images = [[NSMutableArray alloc] init];
    for image in imagesNames
    {
        [images addObject:[image];
        UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
        slowAnimationImageView.animationImages = images;
        slowAnimationImageView.animationDuration = 5;
        [self.view addSubview:slowAnimationImageView];
        [slowAnimationImageView startAnimating];
    }

但是,如果您不想像这样添加for循环,请使用方法addObjectOfArray将对象追加到可变数组中

出现问题,因为
@“jake_5.png”
中有一个额外的空间:

应该是:

@“jake_5.png”

附录:

您希望
UIImageView
为一系列图像设置动画的方式不正确:

请将您的替换为以下内容:

UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
[self.view addSubview:slowAnimationImageView];

NSArray *imageNames = @[@"jake_2.png", @"jake_3.png", @"jake_4.png", @"jake_5.png"];

NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++)
{
    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}

slowAnimationImageView.animationImages = images;
slowAnimationImageView.animationDuration = 5;
[slowAnimationImageView startAnimating];
UIImageView*slowAnimationImageView=[[UIImageView alloc]initWithFrame:CGRectMake(160,95,86,193)];
[self.view addSubview:slowAnimationImageView];
NSArray*imageNames=@[@“jake_2.png”、@“jake_3.png”、@“jake_4.png”、@“jake_5.png”];
NSMutableArray*图像=[[NSMutableArray alloc]init];
对于(int i=0;i
问题的出现是因为
@“jake_5.png”中有一个额外的空间

应该是:

@“jake_5.png”

附录:

您希望
UIImageView
为一系列图像设置动画的方式不正确:

请将您的替换为以下内容:

UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
[self.view addSubview:slowAnimationImageView];

NSArray *imageNames = @[@"jake_2.png", @"jake_3.png", @"jake_4.png", @"jake_5.png"];

NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++)
{
    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}

slowAnimationImageView.animationImages = images;
slowAnimationImageView.animationDuration = 5;
[slowAnimationImageView startAnimating];
UIImageView*slowAnimationImageView=[[UIImageView alloc]initWithFrame:CGRectMake(160,95,86,193)];
[self.view addSubview:slowAnimationImageView];
NSArray*imageNames=@[@“jake_2.png”、@“jake_3.png”、@“jake_4.png”、@“jake_5.png”];
NSMutableArray*图像=[[NSMutableArray alloc]init];
对于(int i=0;i
因为你把空间@“jake_5.png”放在了资源中,所以这张图片在资源中不可用,所以它会给你带来错误


因为您将空格@“jake_5.png”放在了资源中,所以该图像可能不可用,因此会给您带来错误。

将代码放在代码括号中,现在很难理解您的代码阅读错误消息
对象不能为零
检查您的图像名称一次。您存储的图像不应为零。请将代码放在代码括号中,现在很难理解您的代码。请阅读错误消息
object cannot be nil
检查您的图像名称一次。您正在存储的图像不应为零。不,在使用
@[]
语法时,您不应在末尾使用
nil
。@rmaddy但我的“侧注”也提到空格,这会导致错误。这也表明,他试图给图像设置动画的方式是错误的。他尝试设置动画的方式将不会有任何图像动画,因为属性
animationImages
将在循环结束时仅保存一个图像。请修复所有对在数组结束时使用
nil
的引用,然后您将得到一个很好的答案。不,在使用
@[]
语法时,在结尾处不使用
nil
。@rmaddy,但我的“旁注”也是menti