작년 프로젝트를 진행하면서 만들었던 코드인데 재미 삼아 올려 둔다.
당시 상황은 다음과 같다.
앱내에서 그룹을 만들 때 그룹별 색상을 지정하기 특정 숫자를 고유하게 뽑아내기 위한 소스.
이미 사용중인 그룹의 색상 코드(숫자)는 빼고 사용자가 선택할 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개가 될 때까지 반복하도록 한 예제.
가끔 이런 코드를 짤때면 수학을 잘하면 손발이 덜 고생하겠구나라는 생각을 한다.
'프로그래밍 > Xcode-iOS' 카테고리의 다른 글
iOS(아이폰) 진동 구현 , 간단하다. (0) | 2017.07.20 |
---|---|
Xcode8 iOS Framework 만들고 배포하기 (0) | 2017.07.17 |
[Xcode] Archive upload completed with warrings (0) | 2017.04.30 |
[iOS] NSPredicate 24시간 범위 검색 조건 만들기(NSDate) (0) | 2017.04.29 |
[iOS] Event Kit 이용하여 일정 등록 하는 방법 (0) | 2017.04.26 |