작년부터 spring 공부를 시작하긴 했지만, 다른 활동때문에 제대로 공부를 못했다 그래서 처음부터 다시 시작하려고 한다 공부 계획은 인프런 spring 코스 강의를 들으면서 공부할 예정 ! 오늘은 비록 짧은 강의 2개밖에 못 봤지만 ! 시작이 반이니까 ~ 내일부터 더 열심히 공부해야겠다 :) 오늘 배운 것은 프로젝트 생성하는 방법이다. 1. 우선 java 11과 intellij가 설치 되어있어야 한다. 아래 사이트에서 java를 설치할 수 있는데 , 나는 m1이라서 m1에 맞게 java를 설치해줬다 ! https://www.azul.com/downloads/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk Downloads Accord..
Today I Learned - 개발새발(iOS) 깃허브 토큰을 키체인에 저장하는 기능을 구현 class KeyChain { enum KeychainError : Error{ case duplicateEntry case unknown(OSStatus) } static func save( service : String, account : String, password : Data ) throws { let query : [String : AnyObject] = [ kSecClass as String : kSecClassGenericPassword, kSecAttrService as String : service as AnyObject, kSecAttrAccount as String : account as ..
메뉴를 좌우로 스크롤해서 보여주고 싶었다. 처음엔 ScrollView를 horizontal 방향으로 변경해서 해봤는데, 스크롤하면 옆에 요소가 조금 보이는게 마음에 들지 않아서 TabView로 바꿔줬다. 우선 탭뷰를 보여줄 view에 TabView를 구현하는 것처럼 코드를 적는다. 그 다음 PageTabViewStyle()로 tabViewStyle 함수를 실행하면 아래와 같이 된다. (PageTabViewStyle은 TabView가 페이지 스크롤될 수 있게 합니다.) TabView{ breakfastView() lunchSwiftUIView() dinnerSwiftUIView() }.tabViewStyle(PageTabViewStyle()).frame(width: 350,height: 500)
오늘 아람별 프로젝트를 진행하면서 GroupBoxStyle를 처음 사용하게 되었다. GroupBox를 커스텀하려고 찾아보니 정보도 별로 없는 거 같아서,,, 시작하기 전부터 겁먹었는데 막상해보니 간단했다(?!) 우선 오늘 예시로 들 코드와 완성화면이다. struct CustomGroupBoxStyle : GroupBoxStyle{ var background: some View { RoundedRectangle(cornerRadius: 5) .stroke(Color.yellow,lineWidth: 2) } func makeBody(configuration: Configuration) -> some View { VStack{ configuration.label configuration.content } .p..
1. 인스턴스 생성 이니셜라이저 : 인스턴스 생성시 초기화 반환 값이 없다. 기본 이니셜라이저 (매개변수 x) class ClassName{ var count : Int init(){ //초기화할 때 필요한 코드 입력 count = 0 } } struct StructName{ var count : Int init(){ //초기화할 때 필요한 코드 입력 count = 0 } } 이니셜라이저 (매개변수 0) class ClassName{ var count : Int init(check : Int){ //초기화할 때 필요한 코드 입력 count = check } } struct StructName{ var count : Int init(check : Int){ //초기화할 때 필요한 코드 입력 count = ..
프로퍼티 1. 정의 Property : 속성이라는 뜻으로 클래스 구조체 또는 열거형 등에 관련된 값을 뜻함 2. 프로퍼티 종류 저장 프로퍼티 (Stored Properties) 클래스 또는 구조체의 인스턴스와 연관된 값을 저장하는 가장 단순한 개념의 프로퍼티 class ClassName { // 클래스 이름 var propertyName : String = "" // 저장 프로퍼티 } struct Info{ var name : String // 저장 프로퍼티 } 연산 프로퍼티 (Computed Properties) 값을 연산하는 프로퍼티 접근자의 역할이나, 설정자의 역할을 할 수 있다. 접근자와 설정자란?설정자 : 은닉화된 내분의 프로퍼티 값을 간접적으로 설정함 이렇게 텍스트로 읽으면 이해가 잘 안되지만..
구조체 1. 정의 struct 구조체이름 { (프로퍼티와 메서드) } //예시 struct Info{ var name : String var major : String } 2. 구조체 인스턴스 생성 및 초기화 & 프로퍼티 값 변경 var Student1 : Info = Info(name:"김가은",major:"컴퓨터과학과") print(Student1.name) //출력 : 김가은 print(Student1.major) // 출력 : 컴퓨터과학과 //프로퍼티 값 변경 , let으로 선언시 변경 불가 Student1.name = "Kim Ga eun" print(Student1.name) // 출력 : Kim Ga eun 클래스 스위트의 클래스는 부모클래스가 없더라도 상속 없이 단독으로 정의가 가능합니다...
completion handler VS async/await 개념이 뚜렷하게 잡히지 않아 혼자 여러 블로그를 참고하면서 공부함 (다시 공부하고 수정할 예정 !) → 냔지님 , 야곰님 등 참고 completion handler definition 🌟 : The block to execute when the query completes. 쿼리가 완료됐을 때 실행하는 블록 Declaration ✔️ var completionHandler: ((Error?) -> Void)? { get set } how to use it ❓ 간단한 코드로 예를 들어보겠다. func printHello(name : String, completionHandler : (String?) -> Void) { let mes = "Hell..