본문 바로가기
프로그래밍/Xcode-iOS

iOS 랜덤숫자와 객체 비교 예제 (arc4random(), indexOfObject)

by Mr-후 2017. 7. 5.
반응형

작년 프로젝트를 진행하면서 만들었던 코드인데 재미 삼아 올려 둔다. 


당시 상황은 다음과 같다. 


앱내에서 그룹을 만들 때 그룹별 색상을 지정하기 특정 숫자를 고유하게 뽑아내기 위한 소스. 

이미 사용중인 그룹의 색상 코드(숫자)는 빼고 사용자가 선택할 4개의 컬러를 보여주기를 요구하였다. 


do while문을 사용하였고 arc4random()함수를 사용하였다. 객체를 비교할 때는 indexOfObject()를 사용해서 찾는 방식으로 구성했는데 당시 오~ 제법 깔끔한데? 하면서 뿌듯해 했던 코드. ㅋㅋ 



    NSInteger _cnt = 0;

    do {

        NSInteger rNum = arc4random()%9+1;

        NSUInteger idx = [_myGroupColors indexOfObject:[NSString stringWithFormat:@"%ld", (long)rNum]];

        if (idx == NSNotFound) {

            _cnt++;

            [_genColors addObject:NUM(rNum)];

            [_myGroupColors addObject:[NSString stringWithFormat:@"%ld", (long)rNum]];

        }

        

    } while (_cnt < 4);


_cnt변수를 초기화하고 1 ~ 9사이의 랜덤한 숫자를 생성한 다음 _myGroupColors 배열안에 Object형태로 존재하는지 비교한다. 

idx 가 NSNotFound를 라면 사용되지 않은 컬러 코드로 NSNumber형태로 변형해서 생성된 컬러 코드로 저장한다. 


그렇게 총 카운트가 4개가 될 때까지 반복하도록 한 예제. 


가끔 이런 코드를 짤때면 수학을 잘하면 손발이 덜 고생하겠구나라는 생각을 한다. 




반응형