2017-10-26 21 views
0

두 개의 NSMutable 배열의 UIImages가 서로 위에 있습니다. 두 배열 모두에 균일 한 양의 이미지가있을 때 코드가 완벽하게 작동합니다. 그러나, 그들은 평등하지 않을 때 경계 초과 오류가 나타납니다.배열의 첫 번째 객체를 호출하고 다른 배열과 일치하도록 반복 루프

기본적으로 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]]; 
      } 

     } 

답변

0

나는 힘든 시간을 당신이 뭘 하려는지 이해하지만 데 당신이 마지막 방법으로 일을하려고하는 것은 다음 arrSlideshowImg에있는 빈 공간을 당신이 카운트 비교를 채울 경우 두 배열에 같은 수의 항목이 있는지 확인하는 것입니다. 당신이해야 할 일은 인덱스 i를 비교하는 것입니다. _overlayImg에 액세스 할 수 없습니다. 배열에 whats 이상이 있으면 _합니다. 그것이 아마도 당신에게 경계선 오류를 줄 것입니다. 다음과 같이 시도하십시오.

-(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]]; 
      } 

     }