59일차 TIL
모의면접 시뮬레이션 Q&A
Q6. 두 검색 결과를 datetime 필드를 이용해 정렬하여 출력하는 방법을 설명해 주세요.
A: 먼저, 두 검색 결과 리스트를 하나의 리스트로 병합합니다. 그다음, datetime 문자열을 Date 객체로 변환하기 위해 DateFormatter를 생성합니다. 병합된 리스트에서 각 항목의 datetime 문자열을 Date 객체로 변환한 후, 이를 기준으로 리스트를 정렬합니다. 정렬된 리스트를 원하는 형식으로 출력하면 두 검색 결과 리스트를 datetime 필드를 기준으로 합치고 정렬할 수 있습니다.
git add .
잘못했을 때!
git reset .
을 해주면 add 한 거 없어짐 ㅎㅎ
단어장에서 단어장 삭제 시 단어가 남아있는 오류가 있다.
ㄴ NSManagedObjcet를 사용하여 CoreData에서 관계형 데이터를 삭제
: 특정 엔티티가 삭제될 때 연결된 엔티티들의 처리를 결정할 수 있다. 'cascade' delete rule을 사용하면, 단어장을 삭제할 때 자동으로 해당 단어들도 함께 삭제할 수 있음
Delete Rule 설정
1. Cascade (캐스케이드)
: 부모 객체가 삭제될 때, 그와 연관된 자식 객체들도 함께 삭제 ( ex. 단어장 삭제 시 단어들도 삭제 )
2. Deny (거부)
: 부모 객체가 삭제되려 할 때, 자식 객체가 존재하면 삭제 거부 ( ex. 단어장에 단어가 존재하면 삭제 거부 )
3. Nullify (널리 파이)
: 부모 객체가 삭제될 때, 자식 객체와의 관계를 nil로 설정 ( 단어장을 삭제 시 단어장에 속했던 단어들의 단어장 참조가 nil이 됨 )
4. No Action (아무 동작 없음)
: 부모 객체가 삭제되어도 자식 객체에 아무 영향도 주지 않는다. 자식 객체는 그대로 남아 있음.
ㄴ 이 경우, 관계 무결성을 유지하려면 수동으로 자식 객체를 처리해야 한다.
단어장 -> 단어 관계에서 delete rule을 Cascade로 설정
이 설정을 통해 단어장을 삭제할 때 자동으로 관련 단어들도 삭제되고, 단어를 삭제할 때 단어장에는 영향이 없게 됨
단어가 저장될 때 '단어장과 연결되는 관계가 저장되어 있는 데이터'가 같이 저장되어야 한다…! ㅠ
우리는 사실 단어장의 이름이 필요하다고 생각해서 단어를 저장할 때 단어장의 이름으로 저장했는데, 그렇게 저장하니까
지금은 보이지만 BookCase 값이 null로 들어갔었다! 그래서 아마 단어장 엔티티가 자기 자식을 찾지 못해서 같이 삭제가 안되었던 거 같은데,, 이 단어장과 단어를 연결하는 값은 Data값으로 되어있는 거 같아서 단어장 이름은 따로 String값으로 넘겨주는 작업을 해주니까 다른 단어장 이름을 사용하는 코드에 영향을 주지 않고, 잘 실행되는 것을 볼 수 있었다..! 휴 😮💨 다행이당...
이제 입력창에서 텍스트 필드를 눌렀을 때 키보드가 텍스트 필드를 가리는 문제를 해결하기 위한 작업 시작!
https://ios-daniel-yang.tistory.com/97
여기서 보고 공부해서 할 예정