본문 바로가기
728x90

iOS/Objective-C16

NSDictionary // 방법 1 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil]; // 방법 2 NSDictionary *dictionary = @{@"key", @"value"}; dictionary 배열에서 원하는 key의 value 개수 필터링 list : [ { "age" : 3, "grade" : "A" }, { "age" : 32, "grade" : "B" }, { "age" : 14, "grade" : "C" }, { "age" : 6, "grade" : "A" } ] 위와 같은 형식의 배열이라고 해보자, grade별 value counting하여 원하는 결과는 다.. 2022. 11. 4.
NSArray double 타입의 배열 만들기 NSMutableArray *doubleArr = [[NSMutableArray alloc] initWithCapacity:0]; [doubleArr addObject:[NSNumber numberWithDouble:23.1234]]; 포함 값 찾기 // 방법1 if (배열 containsObject:찾으려는값) { // code } // 방법2 // 이 방법은 json데이터의 배열안에있는 객체에서 값을 찾을 때 사용 // predicateWithFormat: 어떤 값을 찾을지에 따라 달라진다. NSPredicate * predicate = [NSPredicate predicateWithFormat:@"키 IN %@", 찾으려는값]; NSArray * resultArray.. 2022. 11. 2.
NSMutableArray 중복 제거 NSMutableArray *_userIds = [NSMutableArray new]; for( NSInteger i = 0; i < 3; i++ ) { [_userIds insertObject:@"aaaaaaaaaa" atIndex:i]; } NSOrderedSet *userSet = [[NSOrderedSet alloc] initWithArray:_userIds]; _userIds = [[NSMutableArray alloc] initWithArray:[userSet array]]; 출처 : https://mrkn.tistory.com/337 2022. 11. 2.
NSString 문자열 생성 NSString * str1 = [NSString new]; NSString * str2 = [[NSString alloc] initWithString:@"안녕안녕"]; 문자열 합치기 NSString * str1 = [NSString new]; str1 = @"반가워"; NSString * str2 = [[NSString alloc] initWithString:@"안녕안녕"]; NSString * str3 = [str1 stringByAppendingString:str2]; // str3 = 반가워안녕안녕 NSString * str1 = @"안녕"; NSString * str2 = [str1 stringByAppendingString:@" 반가워"]; // 안녕 반가워 문자열 비교 NSStr.. 2022. 10. 27.
UIButton 버튼의 테두리 설정 buttonName.layer.borderWidth = 1; buttonName.layer.borderColor = [UIColor colorWithRed:(0/255.0f) green:(176/255.0f) blue:(190/255.0f) alpha:1].CGColor; 버튼 타이틀 정렬 버튼명.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 버튼 이미지 컬러 버튼의 이미지도 내 맘대로 색상을 지정할 수 있다. 버튼 스타일을 custom으로 지정후 tintColor를 수정해주면 되는데, 만약, 변경이 안된다면 Asset -> 해당 이미지의 attribute inspector -> Render As를 'T.. 2022. 9. 28.
NotificationCenter(Observer) 노티피케이션센터는 string 키값을 이용해 여러 화면으로 noti를 보내 원하는 동작을 수행할 수 있게 해준다. 그래서 여러 화면에서 특정 액션을 캐치할 필요가 있다면 NotificationCenter 사용이 적합하다. 다만, string을 이용하면서 오탈자 발생 가능성이 있고, NotificationCenter.default에서 모든 noti가 관리되어서 딜리게이트(프로토콜)와 달리 추적이 쉽지 않다. 그래서 extenstion으로 Notification을 관리해주는 별도 클래스를 두는 것이 좋다. NotificationCenter class Notification.h typedef enum { messageNoti // 간단하게 noti key도 이렇게 관리 messageAdd, messageDel.. 2022. 6. 10.
integer 값 참조 오류 NSInteger로 값을 사용하다보면 막상 길게 의도 하지 않은 숫자로 바뀔때가 있다. 그럴때는 NSNumber의 값을 int로 형변환 하여 사용하면 된다. NSNumber * idxNum = 원하는 숫자; int idx = [idxNum intValue]; 2022. 5. 20.
Extension 파일 생성 1. cocoa touch로 new file 2. extenstion 하려는 Subclass 선택 후 class명 작성 이렇게 하면 지정한 class명으로 .h와 .m 파일이 생성됨 // .h #import NS_ASSUME_NONNULL_BEGIN @interface 클래스명 : sub클래스 @end NS_ASSUME_NONNULL_END // .m #import "클래스명.h" @implementation CustomMarker @end  UIView Extension 예제 - custom drawing imgae 생성 시 // .h NS_ASSUME_NONNULL_BEGIN @interface CustomImage : UIView - (UIImage*) createImage; @end .. 2022. 4. 25.
UIView에 그라데이션 적용하기 - (void)viewDidLoad { [super viewDidLoad]; CAGradientLayer * gradient = [CAGradientLayer new]; gradient.colors = @[(id)[[UIColor yellowColor] colorWithAlphaComponent:0.6].CGColor,(id)[UIColor redColor].CGColor, (id)[UIColor blueColor].CGColor]; gradient.locations = @[@0.0f, @0.5f]; [_gradientView setBackgroundColor:[UIColor clearColor]]; CALayer * backgroundLayer = gradient; backgroundLayer.fram.. 2022. 4. 1.