Landmark구조체가 있다고 가정해본다. struct Landmark { var name: String var foundingYear: Int } Landmark에 Codable프로토콜을 채택한다. Codable프로토콜(Decodable, Encodable)을 채택하면 따로 선언하지 않아도 Codable메서드인 init(from: ) 및 encode(to :)를 지원한다. struct Landmark: Codable { var name: String var foundingYear: Int // Landmark now supports the Codable methods init(from:) and encode(to:), // even though they aren't written as part of i..
오늘은 SceneDelegate 지우는 것에 대해서 남겨보려 합니다. 가끔 프로젝트 지울 때 하는 작업인데 다시 하려니 가물가물해서 정리하는 게 좋을 것 같더라구요. 먼저 프로젝트를 생성해줍니다. 스토리보드 인터페이스를 사용합니다. 프로젝트가 생성되면 info.plist파일에서 Application Scene Manifest를 지워줍니다. 과감히 삭제 고고 다음 AppDelegate.swift파일로 와줍니다. 그리고 window변수를 추가해줍니다. 그리고 AppDelegate.swift파일에 UISceneSession Liftcycle부분을 지워줍니다. 아래 보이는 것 다 지우시면 됩니다. 그리고 마지막 SceneDelegate.swift파일을 지워줍니다. 그리고 빌드하면 성공! 정리하자면 아래와 같습니..
UIButton에서 아이콘 그리고 타이틀 사이에 마진을 설정하는 방법에 대해서 정리하려 한다. 제플린에서 받은 디자인 가이드에서 버튼이 존재했고 그 버튼의 아이콘과 타이틀 사이에 마진 8이 필요했다. (버튼과 라벨을 따로 해도 되지만 버튼과 라벨에 대한 액션을 추가해줘야 해서 번거로워 버튼에 아이콘과 타이틀을 추가해주기로 했다.) 아래와 같이 UIButton을 생성해주고 image는 santa로 title은 santa claus로 설정했다. 기본 오토레이아웃은 중앙 정렬로 설정했다. UIButton을 생성하고 아이콘과 타이틀을 추가하니 아이콘 바로 옆에 타이틀이 위치했다. Button을 초기 생성하고 Insets들을 살펴보면 0으로 설정된 것을 확인할 수 있다. 어쨌든 나는 아이콘과 타이틀 사이의 마진을..
2020/10/12 - [개발/iOS] - AVPlayer클래스 살펴보기 2020/10/12 - [개발/iOS] - AVPlayer에서 플레이어 상태 파악하기 AVPlayer는 미디어 재생과 타임을 관리할 수 있는 컨트롤러이다. 이번에 AVPlayer를 사용해 개발하다가 하루 종일 끙끙거린 문제가 있었다. 먼저 AVAsset으로 모델링한 것으로 AVPlayerItem을 만들어 플레이어에 넣어주었다. 그리고 플레이어를 재생시키면 잘 재생되는 것 까지 확인 완료. 문제는 여기다. 잘 재생되다가 오디오 인터럽트가 지속될시에 현재 재생하고 있는 미디어가 노출되지 않는 현상이 발생했다. (카메라 앱에서 동영상을 오래동안 찍고 있거나 슬립 상태에 진입) 애플에서 자체적으로 비디오 렌더링을 못하게 막는 것 같았음. ..
업무를 처리하다가 프로퍼티의 상황을 체크해야 하는 작업이 있었다. 프로퍼티 옵저버 프로퍼티 값이 설정될 때마다 옵저버가 호출된다. willSet은 값이 저장되기 직전에 호출된다. didSet은 값이 저장된 직후에 호출된다. 그래서 당연히 프로퍼티 옵저버를 사용해야지 하며 사용했다. 초기화하면서 당연히 여기서 프로퍼티 옵저버도 사용되겠지 하면서 사용했는데 초기화 시에는 옵저버가 호출되지 않았다. 그래서 뭐지 🤔이상하네 하면서 문서를 보니까 나만 몰랐던 내용이 적혀있었다. 또 찾아보니 프로퍼티 옵저버를 사용하기 위해서는 프로퍼티의 값이 반드시 초기화되어 있어야 한다고 나와있었다. 그렇기 때문에 클래스의 init()안에서 값을 할당할 때 didSet과 willSet이 호출되지 않았다. 생각해보니 옵저버가 관찰..
Command PhaseScriptExecution failed with a nonzero exit code가 떴을 때 Podfile.lock파일을 삭제한다. Pods폴터를 삭제한다. . xcworkspace파일을 삭제한다. pod install을 해준다. 그리고 clean project를 해준다. 삭제해야 하는 것들은 아래와 같다. 그리고 pod install을 해주면 새롭게 설치된다. 그리고. xcworkspace 파일을 열어서 clean builde folder를 해준다. 그럼 끝 https://forums.developer.apple.com/thread/123790 Xcode 11 Command PhaseScriptExecution failed wi... |Apple Developer Forums..
seed = 0 numpy.random.seed(seed) tf.set_random_seed(seed) seed값을 생성해 주는데 AttributeError: module 'tensorflow' has no attribute 'set_random_seed' 에러가 발생했다. 문서를 확인해보니 변경되었다. tf.set_random_seed(seed) 대신 아래와 동일하게 사용해주면 된다. tf.random.set_seed(seed) https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/random/set_seed tf.random.set_seed | TensorFlow Core r2.0 Sets the graph-level random seed. Ali..
- Total
- Today
- Yesterday
- stanford SwiftUI
- Algorithm
- 문자열
- RX
- string
- 머신러닝
- 독서
- 책 후기
- rxswift
- swiftUI
- objc
- leetcode
- 책
- Animation
- 알고리즘
- iOS SwiftUI
- 스위프트
- swift5
- 애니메이션
- objective-c
- Xcode
- Deep learning
- ARC
- wwdc
- ReactiveX
- ios
- 스위프트UI
- 책 추천
- SWIFT
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |