라벨이 swift3인 게시물 표시

swift 3 에서 pipe forward 연산 적용하기

이미지
Elixir 에서 |> 연산을 사용하는데 아주 직관적이다. 보통 함수는 이렇게 사용한다. let n = 67 let s = String(n + "$") print(s) 하지만 Pipe Forward 연산을 사용하면 이렇다. let n = 67 n |> {String($0) + "$"}    |> {print("2: \($0)") } 두개의 결과는 같다. |> (보통 pipe forward 라 부른다) 연산은 선언을 해야 한다. 이와 같이 하면 사용할 수 있다. 이런 방식이 함수가 중첩되어 표시되는 것보다 휠씬 가독성이 좋다.

EKEventStore requestAccess 사용할때 접근되지 않고 오류날 때 조치방법(Swift3, Xcode 8.1, iOS 10.1)

이미지
일단 오류는 아래와 같은 오류입니다. 기존에 잘되던게 업데이트 하고 나서 안되는 경우입니다. info.plist 에 Privacy - Calendars Usage Description 추가하면  접근 메시지가 보여야 하는데 보여지지 않고 아래와 같은 오류가 나는 겁니다. 오류에 대한 대처는 전부 다 해본거 같습니다. 아래와 같이 수정하니 이부분의 오류는 나지 않고 잘 넘어갑니다. 접근 메시지도 잘 나옵니다, 결론은 error: Error? 이부분에서 ? 를 넣어주니 오류가 안납니다. 옵셔널 값에 대한 널을 허가 해주는 부분인거 같습니다.

swift 3 에서 AutoLayout 적용 후 하위 뷰의 width 값이 1000으로 이상하게 나올 경우

swift 3 에서 AutoLayout을 적용하였다.  하위 뷰에 코드로 생성하여 프레임 단위로 버튼을 여러개 넣는데 잘 안나온다.  로그를 찍어보니 Button.width = 1000 으로 나온다.  view.width = 375 인데....,  뭐가 잘못되었나?  동적으로 생성되는 많은 버튼도 전부 AutoLayout 방식으로 하자니 그동안 계산으로 만들어 놓은 코드가 아깝다.  단 한줄의 코드로 문제를 해결하였다.  전체적인 아웃라인은 뷰를 이용하여 디자인 타임에 스토리보드에서 작성을 하고 동적 생성은 뷰에 프레임 계산해서 넣으면 된다.  뷰가 로드 된 다음에 다음 줄을 넣어야만 정상적인 값이 나와서 계산이 가능하다. self.view.layoutIfNeeded() 나는 이런 방법으로 문제를 해결하였다.  계산 값 바로 이전에 넣어도 되는데 귀찮아서 viewDidLoad() 에 넣었다.