[Tistory] 55, 56일차 TIL

원글 페이지 : 바로가기

모의면접 시뮬레이션 Q&A Q2. UserDefaults로 저장해 놓은 데이터를 UICollectionView에 보여주는 방법을 설명해 주세요. A : UserDefaults 다른 팀원이 사용하셨던 거 쓱 보고 지나갔어서 ㅜ 막상 이렇게 질문이 들어오니.. 정확하게 잘 모르고 있는 것 같았다.. 강의도 들었었는데..🥹 그냥 간단한 데이터 저장하고, 불러오는 데 사용하는 그런 거.. 대충 이렇게 알고 있어서.. 역시 복습이 중요하다 느꼈다.. 그런 의미에서 한 번 더 공부하고 답변 적어야겠다고 생각했다! UserDefaults : 앱 실행 시 지속적으로 키-값 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스 1. UserDefaults를 통해서 plist에 데이터 저장 2. UserDefaults는 사용자의 정보를 저장하고, 불러올 수 있는 싱글톤 인스턴스 3. 간단한 사용자 정보를 저장 및 불러오는 게 가능 ( 내부적으로 plist 파일에 저장되기 때문에 보안상 강력 X ) * 데이터가 많거나 복잡한 경우, CoreData, Realm 또는 다른 데이터 저장 및 관리 도구를 고려하는 것이 좋다. * 이 데이터는 앱이 종료되어도 유지 (사용자의 설정, 사용자 인터페이스 상태, 마지막 사용자 활동 등과 같은 작은 데이터 조각 저장에 사용) https://developer.apple.com/documentation/foundation/userdefaults UserDefaults | Apple Developer Documentation An interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app. developer.apple.com Q2. UserDefaults로 저장해 놓은 데이터를 UICollectionView에 보여주는 방법을 설명해 주세요. A: 우선 UserDefaults는 간단한 데이터 저장하고, 불러오는 데 사용됩니다. 데이터를 저장해 줍니다. 데이터를 배열 형태로 저장한다고 가정하고, UserDefaults의 array(forKey:) 메서드를 사용하여 특정 키에 저장된 데이터를 가져옵니다. 이 데이터를 옵셔널 타입으로 받아온 다음, 옵셔널 바인딩을 사용하여 데이터가 nil이 아니고 형변환이 가능한지 확인한 후, 가져온 데이터를 변수에 할당합니다. 그리고 UICollectionView의 cellForItemAt의 cell에 이 데이터를 설정해 주어서 배열에 저장된 데이터를 컬렉션 뷰 셀에 보여줍니다. 이렇게 UICollectionView에 UserDefaults로 저장한 데이터를 보여줄 수 있습니다. UserDefaults 클래스의 standard 속성은 UserDefaults의 기본 인스턴스 모의면접 시뮬레이션 Q&A Q3. 디자인과 동일한 UI를 구현하는 방법을 설명해 주세요. A: 스토리보드나 코드베이스를 사용해서 디자인과 동일한 UI를 구현할 수 있습니다. 디자인을 위해 필요한 요소들을 추가하고, 위치, 크기, 색상등을 설정해 줍니다. 그리고 다양한 화면 크기와 해상도에서도 UI가 올바르게 표시되도록 오토레이아웃 제약 조건을 설정해 줍니다. 요구된 / 요소의 액션과 기능들도 스토리보드의 경우 IBAction과 IBOulet으로 코드와 연결하여 구현해 줍니다. 시뮬레이터나 실제 디바이스에서 UI 디자인을 테스트하여, 디자인과 동일하게 구현되었는지 확인합니다. 모든 요구사항이 충족되는지 점검하고, 필요시 수정하면서 디자인과 동일한 UI를 구현합니다. 아니 코어데이터 NSManagedObject subclass 생성하는데 자꾸 에러가 떴다,, Invalid redeclaration of “BookCase” 왜지.. 이거 하나밖에 없는데,, ㅠ 하고 찾아보다가 밑에 링크 보고 해결! https://stackoverflow.com/questions/40410169/invalid-redeclaration-on-coredata-classes?newreg=b9895146125f4c3d8549359360197d5a Invalid redeclaration on CoreData classes I am working with CoreData, on an entity called “RoleName”. The problem is: I click on “Create NSManagedObject subclass” from within my model, and so it automatically creates the classes for my en… stackoverflow.com * 컬렉션 뷰 데이터 불러오기 완료 뭔가 파일들을 다 따로 만들어놓으니까 연결해서 연결한다고 해야 하나,, 그런 것들이 너무 어렵고, 복잡하다는 생각이 들었다… ㅠ 컬렉션 뷰도 데이터 잘 나오게 만든 거 같은데 왜 안 뜨지? 1 해서 코어데이터에 잘 저장되었는 지도 확인하고 그랬는데,, func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = vocaBookCollectionView.dequeueReusableCell(withReuseIdentifier: BookCaseBodyCell.identifier, for: indexPath) as! BookCaseBodyCell
let bookCaseData = bookCases[indexPath.item]
cell.configure(with: bookCaseData)

return cell
} 코어데이터 저장은 잘 되고 셀도 코어데이터 수만큼 불러와지는데 안에 데이터만 안 뜨면 이 부분이랑 cell 부분에 문제가 있는 거 같아서 이렇게 configure로 해서 func configure(with bookCaseData: NSManagedObject) {
if let imageData = bookCaseData.value(forKey: “image”) as? Data {
imageView.image = UIImage(data: imageData)
imageView.contentMode = .scaleToFill
}
nameLabel.text = bookCaseData.value(forKey: “name”) as? String ?? “코딩 단어장”
detailLabel.text = bookCaseData.value(forKey: “explain”) as? String ?? “Swift 공부”
let word = bookCaseData.value(forKey: “word”) as? String ?? “Swift”
let meaning = bookCaseData.value(forKey: “meaning”) as? String ?? “한국어”
languageLabel.text = “\(word) / \(meaning)”
} 가져오니까 됏음.. 휴 ㅠㅠ 코어데이터 내용 확인하고 관리하기! ㄴ 난 아직 삭제버튼을 만들지 않았는데 코어데이터를 삭제하고 싶고,, ㄴ 코어데이터에 내용이 잘 저장되었는지 확인하고 싶고,, ㅠ 그랬는데 팀원분이 알려주셨다 ㅎㅎ! https://sqlitebrowser.org/dl/ Downloads – DB Browser for SQLite (Please consider sponsoring us on Patreon 😄) Windows Our latest release (3.12.2) for Windows: Free code signing provided by SignPath.io, certificate by SignPath Foundation. Windows PortableApp Note – If for any reason the standard Windows release does n sqlitebrowser.org 여기에서 데이터베이스 볼 수 있는 프로그램을 깔아서 https://velog.io/@horus222128/CoreData%EC%97%90-%EC%A0%80%EC%9E%A5%EB%90%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 CoreData에 저장된 데이터 확인하는 방법 CoreData에 저장된 데이터 확인하는 방법 velog.io 여기에 보면 링크가 있는데 그 링크를 실행하면 콘솔에 파일경로가 나온다! 파일 경로에서 마지막에 documents부분 빼고 링크를 복사해서 finder에 검색하면 파일들이 몇 개 나오는데 그중에 Library에 들어가서 Application Support에 들어가면 sqlite 파일이 있다! 이 파일을 클릭하면 자동으로 저 프로그램과 연결되어서 실행됨! 지금은 내가 splite 파일을 연 게 아니라서 데이터가 없는데 sqlite 파일을 열면 저기에 내가 만든 엔티티가 있다! ( 왜인지 모르겠지만 앞에 Z가 붙어있음 ) 여하튼 이렇게 하면 데이터를 확인하고, 관리할 수 있음! 추가는 안 해봐서 모르겠지만,, 삭제는 가능! NotificationCenter 등록된 관찰자에게 정보를 브로드캐스팅할 수 있는 알림 발송 메커니즘 https://developer.apple.com/documentation/foundation/notificationcenter NotificationCenter | Apple Developer Documentation A notification dispatch mechanism that enables the broadcast of information to registered observers. developer.apple.com https://velog.io/@minji0801/iOS-Swift-%EB%AA%A8%EB%8B%AC-dismiss%ED%95%9C-%ED%9B%84-CollectionView-%EB%8D%B0%EC%9D%B4%ED%84%B0-Reload%ED%95%98%EA%B8%B0-NotificationCenter [iOS | Swift] Modal dismiss 한 후 CollectionView Reload 하기 (NotificationCenter) Modal로 띄운 화면을 dismiss하고 나서 이벤트 처리하기 velog.io 유연성: – NotificationCenter를 사용하면 뷰 컨트롤러 간의 결합도 ↓ (즉, 코드를 변경하지 않고도 여러 뷰 컨트롤러 간의 통신 설정 가능) – 앱의 구조를 모듈화 하고 유연하게 만든다. * delegate를 사용하면 BookCaseViewController와 AddBookCaseViewController 사이의 직접적인 의존성이 생기게 됨 효율성: – NotificationCenter는 퍼블리셔/서브스크라이버 패턴(publisher/subscriber pattern)을 사용하여 동작. – 이벤트를 발생시키는 측과 이벤트를 수신하는 측을 분리하고, 이벤트를 수신하는 측이 필요한 경우에만 그에 대한 대응을 할 수 있게 함 – 코드를 보다 명확하게 만들어주고, 앱의 성능에도 긍정적인 영향을 미칩니다. 처음에 delegate로 하다가 계속 안 돼서ㅠ 찾아보다가 NotificationCenter로 구현 UIMenu 만드는 중 ! https://ios-daniel-yang.tistory.com/91#article-2-2–uibutton%EC%9D%98-menu-%EC%86%8D%EC%84%B1%EC%9D%84-%ED%86%B5%ED%95%B4-menu-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 [Swift/TIL #15] UIMenu를 사용해보자 [TIL #15] 2023 / 04 / 17 UIMunu는 iOS 13부터 추가된 기능입니다. 특정 오브젝트를 길게 누르거나, 특정 제스처에 나타나는 메뉴 커스터마이징 할 수 있습니다. 한번 UIMenu에 대해 간단히 알아봅시다. UIMen ios-daniel-yang.tistory.com

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다