📊 분류 전체보기 278

[Swift] 열거형

enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day: Weekday = Weekday.mon day = .tue // day 가 Weekday 타입이므로 .tue 이런 식으로 축약해서 써줄 수도 있다. 다만 Weekday 타입이라고 명시해줬어야 함 switch 문을 이런 식으로 많이 쓴다. 그리고 Swift 의 enum 은 C 언어의 enum 처럼 정수값을 가질 수 있다. enum Fruit: Int { case apple = 0 case grape = 1 case peach } 자동으로 1씩 증가한다. 따라서 peach 는 2 단, case 별로 다른 정수 값을 가져야 한다. 이렇게 rawValue 로 값을 확인할 수 ..

🦜 Swift 2022.11.19

[Swift] 클래스

클래스와 구조체는 매우 유사하지만 차이점은 구조체는 값 타입인 반면 클래스는 참조 타입이다. 값 타입과 참조 타입 값 타입은 상수나 변수에 할당하거나 함수에 넘겨질 때 복사가 됩니다. 값 타입과는 다르게 참조 타입은 변수나 상수에 할당하거나 함수에 넘길 때 복사하지 않습니다. 복사 대신에 기존에 같은 인스턴스에 참조가 사용됩니다. 즉 값이 복사되는 것이 아니라 메모리를 참조하는 것입니다! 그래서 클래스는 객체를 만들고 프로퍼티 접근해서 값을 변경하면 그 프로퍼티 값이 다 변경된다. 다시 말해 메모리를 참조하기 때문 그리고 Swift 의 클래스는 다중 상속이 안된다는 점을 기억하자. 클래스 예제를 보자 class Sample { var mutableProperty: Int = 300 // 가변 프로퍼티 l..

🦜 Swift 2022.11.19

[Swift] 구조체

위의 구조체를 예시로 들어보겠다. var mutable: Sample = Sample() mutable.mutableProperty = 200 // ok! mutable.immutableProperty = 200 // error //////////////////////////////////////////////////////// let immutable: Sample = Sample() // 불변 인스턴스 immutable.mutableProperty = 200 // error immutable.immutableProperty = 200 // error 타입 프로퍼티 및 타입 메서드라는 것은 각각 타입 자체가 사용할 수 있는 프로퍼티, 메서드를 의미한다. Sample.typeProperty = 300 S..

🦜 Swift 2022.11.19

[Swift] if let vs guard let

if let xx = x { //xx는 여기서만 사용가능 } else { print("x is Optional") } print(xx) //error! if let의 경우에는 옵셔널 추출을 실패하여 false가 된 else문 뿐만 아니라 성공한 경우에도 제어를 할 수 있습니다. 하지만 할당 상수를 if문 안에서만 사용할 수 있습니다. 위의 코드처럼 실행을 해본다면 xx는 지역변수이기 때문에 오류가 발생하게 됩니다. 위의 코드를 보면 xx 는 전역변수로 쓸 수 없고 else 문은 통과하지 않는다. 반면 위의 코드는 else 문을 통과한다. (nil 일때) https://velog.io/@wook4506/iOS-Swift-%EC%98%B5%EC%85%94%EB%84%90-%EB%B0%94%EC%9D%B8%E..

🦜 Swift 2022.11.19

[Swift] guard let

옵셔널 바인딩을 할 때 if let 뿐만 아니라 guard let이라는 것도 많이 쓰입니다. 둘은 거의 비슷하지만 약간의 차이가 있습니다. 일단은 코드를 써보면서 guard let을 이해해 보겠습니다. 위와 비슷한 코드를 하나 짰습니다. 옵셔널 상수 x와 옵셔널 상수 y에 각각 10과 nil로 초기화 해주고 이번에는 guard let을 써서 옵셔널을 추출했습니다. if let과 구문은 비슷하지만 guard let에서는 else인 부분만 작성이 가능합니다. 즉, 값이 nil이여서 옵셔널 추출이 되지 않을때만 어떠한 행동을 취할 수 있죠. 그리고 만약 nil값이 아닐 걸 확인하고 옵셔널을 성공적으로 추출했다면 guard let문을 통과하게 되게 되는 거죠! 여기서 한가지 중요한 점이 있었는데 이렇게 guar..

🦜 Swift 2022.11.19

[Swift] if let

옵셔널 값 추출 옵셔널 바인딩이란 강제로 옵셔널을 여는 방식(Force unwrapping)이 아닌 안전하게 확인을 해보고 unwrapping하는 방법입니다. 즉, if문을 이용하여 옵셔널에 할당된 값을 임시 변수 또는 상수에 할당을 해주는 방식입니다. Force unwrapping : !를 써서 강제로 옵셔널 추출 Optional Binding : if let, guard let을 써서 옵셔널 추출 if let 또는 if var 을 사용하여 옵셔널의 값이 존재하는지를 검사한 뒤, 존재한다면 그 값을 다른 변수에 대입시켜줍니다. 만약 옵셔널에 값이 있다면 if문 안으로 들어가게 되고 nil이라면 그냥 통과하게 되는 방식이죠!! 이렇게 확인을 해주고 unwrapping을 해준다면 강제로 unwrapping..

🦜 Swift 2022.11.18

[Flutter] 푸시 알람 눌렀을 때 다른 페이지로 이동

먼저 푸시 알람은 기본적으로 앱의 상태 즉 포그라운드, 백그라운드, 종료 상태에 모두 다르게 핸들링하게 된다.이것은 flutterfire 에 더 자세히 써져있고 친절하니 공식 문서를 참고하는 것이 좋다.정리해보면    To listen to messages whilst your application is in the foreground, listen to the onMessage stream. final localNotification = Get.find();FirebaseMessaging.onMessage.listen((RemoteMessage rm) async { dev.log("FCM.onMessage.listen()"); dev.log(rm.notification?.title ?..

🐦 Flutter 2022.11.17

[개인 프로젝트] 푸시 알림

시작하게 된 계기 처음엔 이 프로젝트를 할 생각이 없었다. 단지 회사에서 일 하던 중 사수분이 캐시스텝을 구현하고 있었고 그때쯔음 백그라운드에서 걸음수가 쌓이지 않던 이슈가 있었다. 그때부터 나의 호기심이 발동되었다. 백그라운드가 뭘까 부터 시작했다. 백그라운드에서는 앱이 동작하지 않을 수도 있구나 그러면 백그라운드에서 카카오톡 같은 알림은 어떻게 오는걸까 실제로 다른 앱들의 푸시 알림은 어떻게 구현하였을까 이렇게 생각이 꼬리에 꼬리를 물어 파이어베이스 클라우드 메시징에 도달하였고 나는 파이어베이스 클라우드 메시징을 직접 구현해보고 싶어졌다. 시작은 가벼웠다 물론 삽질도 있었다. 블로그 보고 따라해서 구글서비스 파일을 직접 넣기도 하고 네이티브 코드를 직접 수정하는 등 삽질을 하였다. 결국 공식 문서를 ..

xcode push notification not showing

나는 파이어베이스 클라우드 메시징을 이용해서 iOS 의 Push Notification 을 구현하고 싶었다. 참고로 나는 플러터 개발자이기 때문에 iOS xcode 를 다룸에 있어서 익숙치 않다. 나는 인증서와 키를 모두 알맞게 발급 받았다. 혹시 인증서와 키 발급 받는 방법이 궁금하신 분들은 아래 영상을 참고하면 된다. ↓ https://www.youtube.com/watch?v=ytT65m_CjXU&list=LL&index=11 이제 + 버튼을 눌러서 Push Notification 을 추가할 차례이다. 그런데!!!!!!!!! 난 저 + 버튼을 누르면 Push Notification 이 없었다. 오잉? 내가 뭘 잘못했나 하면서 인증서, 키 모두 체크했고 별 이상 없었다. 다른 사람들은 저 버튼 눌러서..

👩🏻‍💻 TIL 2022.10.24

[iOS] [Flutter] module not found.

ios 로 디버깅 시도 하던 중 패키지만 깔고 나면 module not found 라는 문구가 나타난다. 디버그 콘솔 보면 import 패키지 에러 어쩌구저쩌구.. 스택오버플로우를 참고해서 모든 방법을 시도해봤다. https://stackoverflow.com/questions/61956166/flutter-module-not-found-in-xcode Flutter module not found in Xcode When I build the app in Xcode it throws the error: .../ios/Runner/GeneratedPluginRegistrant.m:10:9: Module 'audioplayers' not found I tried reinstalling and setting ..

👩🏻‍💻 TIL 2022.10.18