분류 전체보기
-
에러 처리Swift/swift 문법 2023. 3. 27. 21:21
함수에서 에러가 발생하는 경우 이를 알릴 수 있는 수단이 필요함. : 에러가 나올 수 있는 함수에는 표시하기로 함 (throws 키워드) 에러타입 정의 enum Errors: Error { case errorMax case errorMin } : 사전에 에러타입을 정의해주어야함. func checkError(a:Int) throws -> Bool{ // :throws 키워드로 에러를 던질 수 있음을 알림 if a > 5 { throw Errors.errormax //5 이상인 경우 에러타입 반환 } } 에러가 발생할 수 있는 함수 실행 방법 do { let result = try checkError(m:5) //try키워드 필수, 함수가 정상적으로 실행 된 경우에 result에 할당 } catch { /..
-
Result TypeSwift/swift 문법 2023. 3. 27. 20:19
: 에러가 발생하는 경우 에러를 외부로 던지는 것이 아니라, 리턴 타입 자체를 Result Type으로 구현하여 함수 실행의 성공과 실패를 담아서 리턴 Result Type 사용 이유: try구문으로 에러 처리를 하기 힘듦 -> 타입 자체에 에러를 던질 수 있는 타입을 만들어준다. Result Type -> 열거형으로 구현 case success(Success) case failure(Failure) : 연관값을 반드시 필요로 한다. func resultType(m: Int) -> Result { if m > 5 { //throw 키워드가 아닌 return 키워드 이용 return Result.failure(valueError.maxError) //failure열거형 채택, 내부의 error중 maxEr..
-
개인 정보 처리 방침기록 2023. 3. 26. 20:36
NoMoreDiet (''은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2023년 1월 1부터 적용됩니다. 제1조(개인정보의 처리 목적) NoMoreDiet (''이하 은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 1. 홈페이지 회원가입 및 관리 회원 가입의사 확인 목적으로 개인정보를 처리합니다. 제2조(개인정보의 처리 및 보유 기간) ①..
-
다중 버전 동시성 제어(MVCC)생각 2023. 3. 17. 03:16
원자성 : 어떤 것이 더 이상 쪼개질 수 없는 성질. atomic, 어떠한 작업이 실행될 때 언제나 완전하게 진행되어 종료되거나, 그럴 수 없는 경우 실행을 하지 않는 경우에 원자적이라고 말한다. 다중 버전 동시성 제어(multiversion concurrency control, MCC, MVCC) MVCC는 데이터베이스 관리 시스템이 사용하는 동시성 제어 방식으로 데이터베이스로의 동시 접근을 제공하고 프로그래밍 언어에서 트랜젝셔널 메모리를 구현한다. MVCC 데이터베이스가 데이터의 업데이트가 필요할 때, 기존 데이터 항목을 새로운 데이터가 덮어쓰는 대신 데이터 항목의 새로운 버전을 만든다. 즉, 여러 버전이 저장된다. 각 트랜잭션이 주시하는 버전은 구현된 격리 레벨에 따른다. -> Git 버전 처럼 여..
-
[Swift] Realm 스레딩 이용시 주의사항 - Realm은 하나의 스레드에서 작업이 이루어져야 한다code 2023. 3. 17. 02:02
Realm은 하나의 스레드에서 작업이 이루어져야 한다. : Realm은 데이터베이스의 동시성 이슈를 제어하기 위한 데이터베이스이다. = 멀티 버전 동시성 제어(MVCC) = 연결되는 스레드는 특정한 시점의 데이터 스냅샷을 보게 된다. (= 일반적인 경우 가장 최신 버전) Relam의 객체는 자동 갱신된다. let puppies = realm.objects(Dog).filter("age 아직 개가 Realm에 추가되지 않았기 때문에 0 let myDog = Dog() myDog.name = "Rex" myDog.age = 1 try! realm.write { realm.add(myDog) } puppies.count // => 실시간으로 1로 갱신됩니다. //..
-
지정생성자vs편의생성자, 클래스와 인스턴스의 메모리 구조 차이code 2023. 3. 15. 23:59
클래스와 인스턴스의 메모리 구조 차이 클래스 구조체 클래스의 인스턴스는 힙에 저장, 그 인스턴스를 가리키는 변수의 메모리 주소가 스택에 담겨 저장된다. 실제 인스턴스의 데이터 자체가 스택에 저장 참조 타입 값 타입 생성자란 무엇인가? 클래스나 구조체의 모든 저장 속성에 초기값을 설정하여 인스턴스를 생성할 수 있도록 하는 것 -> 저장속성의 메모리에 모든 값들을 갖게 만들어, 각각의 인스턴스가 모든 데이터를 가지고 데이터로서 역할을 할 수 있도록 생성하는 함수 지정 생성자 vs 편의 생성자 지정생성자 - 직접적으로 메모리값을 세팅하는 역할을 하는 생성자, - 모든 프로퍼티를 초기화해야 할 임무를 가지고 있음. 클래스에 하나 이상 정의해야함. - 조상클래스에서 지정 이니셜라이저가 자손클래스의 지정 이니셜라이..
-
리스트에 자료 추가하기code 2022. 10. 20. 03:07
convertedAddressList = [] if json_data['response']['status'] == 'OK': x = json_data['response']['result']['point']['x'] y = json_data['response']['result']['point']['y'] #print("\n경도: ", x, "\n위도: ", y) convertedAddressList.append([address,x,y]) 리스트를 전역변수로 선언 함수 반환 있을 필요 없음 추가 요소 리스트에 append