목록iOS (128)
꾸준히 안타치기
델리게이트란? 대리자 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 것을 의미 객체가 해야할 일을 부분적으로 확장하여 대신해서 처리를 해준다. 하나의 객체가 모든일을 처리하는 것이 아니라 처리해야할 일 중의 일부를 다른 객체에 넘기는 것을 말한다. 그 업무를 잘하는 사람에게 일을 대신해달라고 요청하는 것 델리게이트는 쓰면 뭐가 좋은가? 기능을 위임할 수 있는 객체가 있다는 것은 그만큼 직접 구현해야하는 부분이 적다는 뜻 -> 효율성이 높다. 큰 규모의 프로그램을 빠르게 작성할수 있다. 델리게이트는 왜 쓰나? 델리게이트는 특정한 상황에 대리자에게 메시지를 전달하고, 응답을 받기 위한 목적으로 사용된다. 처리하라고 시키는 객체 (프레임워크 객체 ) --- 요청 ->>>> 대신 처리해줄 객체 (..
문제 1 탄력적 IP설정 인스턴스를 생성한뒤에 인스턴스가 중지되거나, 종료될때마다 탄력적IP를 설정해두지 않으면, 접속시마다 IP가 변경된다. > 그래서 탄력적 IP를 설정해주어야함 (Elastic IP Adderesses부분) 탄력적 IP를 만든뒤에 인스턴스에 적용을 하지 않으면 비용이 발생한다. 탄력적IP를 생성했으면 꼭 적용해준다. 문제 2 인스턴스 활성 리전 설정 결제대시보드에서 총 활성 AWS리전 수를 확인한다.(우측 하단) 개빡치는 것이.. 요금 부분에 리전이 두개인데 의도치않게 2개가 활성화 되어 있었다. 그래서 요금도 두배가 된다.^^ Asia Pacific(Seoul) US west(N.california) > 서울로만 설정했는지 잘 확인한다. > 리전 인스턴스를 확인하고, 의도하지 않은..
클라이언트와 서버에서 좋아요의 처리를 어떻게 해야할지에 대한 고민 현재 게시글의 좋아요를 누르면 이 정보를 서버로 보내서 테이블에 저장을 하고 있는 상태.(글번호,ID) 좋아요정보를 서버로 보내는 이유는 좋아요를 모아서 보기위함 이때 하트버튼을 토글방식으로 누르고 있는데 ♡(눌리기전) -> ♥(누른후) 처음엔 버튼의 눌리는것의 정보도 함께 서버로 보내서 저장을 하고 그 값을 가져와서 그대로 뿌리는 방법을 생각했는데 단순한 버튼의 눌림은 클라이언트 상에서만 정보를 갖고 있어도 되지 않을까 라는 생각이들었고 은둔 고수님들의 생각은 어떤지 궁금해 카페에 질문을 해보았다. https://cafe.naver.com/mcbugi 생각한 구현방법?! 로그인했을때 아이디값+게시글번호(좋아요 버튼의 눌림 여부)를 U..
문제 Alamofire를 사용해 서버에서 데이터를 받아오고 코더블을 적용 -> 값 안옴 do catch문에 error문에 -> " The data couldn’t be read because it is missing " 라고 뜸 dataJSON는 잘가져옴 디코딩을 했는데 이상하게 가져온값이 찍히지를 않았다. no data라고 뜨지도 않음.. 원인 JSONDecoding 오류 위와 같은 에러는 단순히 error를 출력할 때 나오는 error라함 , JSONDecoding에러에 관련된 에러처리 코드 적용해줌 } catch let DecodingError.dataCorrupted(context) { print(context) } catch let DecodingError.keyNotFound(key, cont..
서버에서 이미지를 불러올때 매번 URL을 호출해서 이미지를 가지고 왔었는데, 이미지를 가져올때마다 새로 불러오느냐고 질문을 주셔서 이 부분에 대해서 생각을 하게 되었다. 생각해보니 그러면 리소스도 많이들고, 비용이 많이 드는 문제가 있을 것 같았다. 메모리에 잠시 저장하는 캐시라는 것이 있다는 것을 알았고 이미지 캐시를 어떻게 하면 좋을지 공부해보았다. 캐시란? 3.〔컴퓨터〕캐시메모리: 주(主)기억 장치에 들어 있는 데이터의 일부를 일시적으로 보관하는 고속 기억 장치. 캐시를 왜 써야할까? 매번 이미지를 가져올때마다 네트워킹을 하게 된다면 비효율적! (리소스 낭비, 다운로드시간 낭비) 한번 받아둔 이미지는 캐시에 저장해서 자동적으로 지워지기 전까지 빠른처리를 하게한다. 이미지를 캐시하는 방법을 찾아보니?..
문제발생 aws ec2서버 사용중 탄력적IP를 생성후 인스턴스에 연결해 사용하지 않아 과금이 발생했다. 탄력적 IP를 사용해야하는 이유는 서버를 중지하거나 재접속했을때 탄력적IP(고정IP)를 사용하지않으면 매번 IP가 바뀌는 이슈가 생김 탄력적 IP를 설정하고 터미널로 서버에 다시 접속할때 하단 문제가 발생했다. 목적지 서버가 재설치 되었다. 목적지 서버가 다른 서버로 교체되었다. 해결방법 ssh-keygen 으로 호스트 정보 업데이트 접속을 시도하려는 내쪽(Client)에서 해당 서버에 대한 키를 제거한 후, 다시 접속을 시도하면 된다. $ ssh-keygen -R 111.222.333.444 known_hosts 파일 직접 수정 , 해당라인을 삭제하고 터미널 재시작 known_hosts 파일 편집 에..
델리게이트 https://bluedogs.tistory.com/386?category=1007876 Delegation패턴을 이용한 커스텀쎌 버튼 클릭 델리게이트란? 대리자 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 것을 의미 객체가 해야할 일을 부분적으로 확장하여 대신해서 처리를 해준다. 하나의 객체가 모든일을 처리 bluedogs.tistory.com tableView cell 테이블뷰 셀클래스를 만들고 연결 테이블뷰 셀에 버튼 클릭액션을 만든다. 프로토콜을 정의한다. onClickCell(index: Int) 델리게이트를 정의하고, 버튼을 클릭했을때 게시글의 indexPath를 가져오도록 한다. tableView cellForRowAt에 커스텀셀을 연결한다. 셀에 델리게이트를 설..
https://greendreamtrre.tistory.com/30 Swift (스위프트) 자료형, 형변환, 기본 문법 Playground에서 정지 버튼을 누르고 좌측 숫자 옆에 재생 버튼을 누르면 그 행까지만 실행한다. (Shfit + return과 동일) Shift + return을 반복해서 한줄씩 내려가며 디버깅하기 좋음. 자료형 Int : 정수 (기 greendreamtrre.tistory.com String -> Double // 카메라 함수에 넣기위해 더블형태로 바꾸기 let lat = Double(mapModels.addresses[0].y)! let lon = Double(mapModels.addresses[0].x)!
https://stackoverflow.com/questions/29137488/how-do-i-resize-the-uiimage-to-reduce-upload-image-size How do I resize the UIImage to reduce upload image size I've been searching google, and have only come across libraries that either reduce the height/width or some how edit the UIImage appearance via CoreImage. But I have not seen or found one library, ... stackoverflow.com extension UIImage { fu..
기본 입력 받기 (input의 타입은 String) var input = readLine()! Int형 한 개의 숫자 입력 받기 var num = Int(readLine()!)! "1 2 3 4 5"와 같은 공백 있는 숫자 입력 받기 // split - ReturnType: [SubString] var nums = readLine()!.split(separator: " ").map {Int($0)!} // components - ReturnType: [String] var nums = readLine()!.components(separatedBy: " "). map {Int($0)!} "12345"와 같은 공백 없는 숫자를 배열로 입력 받기 바로 Int($0)! 보다 Int(String($0))! 가 속..
https://www.boostcourse.org/mo326/lecture/16906?isDesc=false 야곰부스트코스 https://developer.apple.com/documentation/uikit/uicollectionview 컬렉션뷰 구조 컬렉션뷰 셀 컬렉션뷰의 셀은 냉장고 속에 있는 반찬통으로 생각할 수 있습니다. 컬렉션뷰라는 냉장고가 있고, 냉장고 안에는 실제 반찬(콘텐츠)을 담고 있는 컬렉션뷰 셀이라는 반찬통이 있다고 생각할 수 있습니다. 컬렉션뷰 셀에 특징에 대해서 알아볼까요? 컬렉션뷰 셀은 데이터 아이템을 화면에 표시합니다. 하나의 셀은 하나의 데이터 아이템을 화면에 표시합니다. 컬렉션뷰 셀은 두 개의 배경을 표시하는 뷰와 하나의 콘텐츠를 표시하는 뷰로 구성되어 있습니다. 두 개의..
Alamofire 파운데이션 프레임워크에서는 API호출하기 위해 URLRequest객체를 만들어서 사용했지만, Alamoifire는 더욱 간편하게 접근 할 수 있도록 함. Alamofire 는 비동기 기반으로 네트워크 응답을 처리하기 때문에, 응답 메시지를 reponse 메소드의 결과값으로 반환받을 수 없다. 서버에서 응답이 도착했을때 실행될 로직을 클로저로 미리작성해 , reponse 메소드에 넣어주어야 한다(콜백 함수). Alamofire 는 서버에서 응답이 도착하면 이를 DataResponse타입의 객체로 처리한다음, 이를 클로저의 매개변수에 담아 호출한다. //현재 시간 GET호출 func callCurrentTime() { AF.request("API URL. AF.request는 매개변수로 s..
일정한 형식을 갖춘 텍스트 기반의 메시지형식을 HTTP 메시지라고 한다. 앱이 서버와 연동하기 우해서는 서버에 요청할 HTTP메시지를 직접 만들어서 전송해 주어야한다. HTTP메시지는 요청과 응답으로 나눌 수 있다. 라인 - 헤더 - 바디 세부분으로 구성된다. HTTP메시지는 라인 - 헤더 - 바디 세부분으로 구성 라인 HTTP메시지의 맨 첫줄에 해당하는 내용으로( 반드시 한줄로 작성 ) 메시지의 가장 기본적인 응답/요청여부, 메시지 전송방식, 상태 정보등이 작성 헤더 메시지 본문에 대한 메타정보 Host: 서버주소 Contents- Type: application/x-www-form-urlencoded 바디 실제로 보내고자 하는 메시지의 본문내용 https://bluedogs.tistory.com/70..
https://www.boostcourse.org/mo326/lecture/20146?isDesc=false iOS 앱 프로그래밍 부스트코스 무료 강의 www.boostcourse.org 예제를 실행하기 위해 에셋에 제이슨 파일 추가 제이슨형태 /** { "name":"하나", "age":22, "address_info": { "country":"대한민국", "city":"울산" } }, */ 더보기 [ { "name":"하나", "age":22, "address_info": { "country":"대한민국", "city":"울산" } }, { "name":"주현", "age":34, "address_info": { "country":"대한민국", "city":"김해" } }, { "name":"영선",..