在数组中调用First Object并将其循环以匹配另一个数组

时间:2017-10-26 23:31:51

标签: objective-c xcode nsmutablearray

我有两个UIImages的NSMutablearrays相互叠加。当两个阵列中存在均匀数量的图像时,我的代码可以正常工作。但是,当它们不相等时,我得到一个越界错误。

我要做的是基本上采用overlayImg数组的第一个对象并“复制”它以匹配另一个数组的编号。这是我到目前为止所得到的。

-(void)ViewDidLoad
{
 _overlayImg = [[NSMutableArray alloc] init];

if (self.record.imagebackground) {
 NSArray *array = [[NSKeyedUnarchiver unarchiveObjectWithData:self.record.imagebackground] mutableCopy];
 for(UIImage* image1 in array) {
 NSData *imageData1 = [NSData dataWithData:UIImagePNGRepresentation(image1)];
 [_overlayImg addObject:imageData1];

 }


-(void)final
for (int i = 0; i < self.arrSlidshowImg.count; i++)
        {
        if (self.arrSlidshowImg.count == _overlayImg.count)
            {
              _arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
             _flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
            [self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_gifoverlayImg objectAtIndex:i]];
            }
            else

            {
             _arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
            _flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
                 [self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_overlayImg firstObject]];
            }

        }

1 个答案:

答案 0 :(得分:0)

我很难理解你要做什么,但如果你在最后一个方法中尝试做的是填满arrSlideshowImg中的任何空白区域,那么你正在进行的计数比较只是确保两个阵列中的项目数相同。你应该做的是比较索引i。如果数组中有多个,那么也不要访问_overlayImg。这可能会给你带来越界错误。尝试这样的事情:

-(void)final
for (int i = 0; i < self.arrSlidshowImg.count; i++)
        {
        if (i < _overlayImg.count)
            {
              _arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
             _flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
            [self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_gifoverlayImg objectAtIndex:i]];
            }
            else

            {
                 [self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_overlayImg firstObject]];
            }

        }