묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바스크립트 : 기초부터 실전까지 올인원
TODO 앱 만들기 관련 질문있습니다!
개선사항으로 남겨주신것 중에서 각 탭에서 데이터 삭제시, UI 바뀌지 않는것을 해결하려고 하는데요! 1. 토글함수나 delete함수에서 마지막에 render()가 아닌 filter() 함수로 가게 되어있던데,,,delete() 함수인 경우에 배열에서 데이터가 삭제되었으니까 바로 render() 함수로 넘기면 안되는건가요? 2. 아래처럼 코드를 짜면 왜 에러가 나는건지 궁금합니다. 왜 if문에 event.target.id가 속해있어야 하는건가요? mode = event.target.id; if (event) { document.getElementById("under-line").style.width = event.target.offsetWidth + "px"; document.getElementById("under-line").style.top = event.target.offsetTop + event.target.offsetHeight + "px"; document.getElementById("under-line").style.left = event.target.offsetLeft + "px"; }
-
미해결야곰의 iOS 프로그래밍
todo 앱에서 파일 저장 기능에 대한 질문입니다.
안녕하세요? 자꾸 귀찮게 질문 드려 죄송합니다만... todo앱에서 또 질문이 있습니다 ㅠㅠ 아래 Todo 어레이를 JSON 파일로 저장하는 코드 및 save func 코드에 대한 질문입니다. /// 현재 Todo 배열 상태를 JSON 파일로 저장 @discardableResult private static func saveToJSONFile() -> Bool { do { let data: Data = try JSONEncoder().encode(self.all) try data.write(to: self.todosPathURL, options: Data.WritingOptions.atomicWrite) return true } catch { print(error.localizedDescription) } return false } Todo를 추가/수정하거나 삭제할 때 FileManager의 url path에 todos.jason 파일을 만들고 파일 유무를 확인한 다음에 그 파일에 json으로 인코딩 후 write를 하고, Todo를 추가/수정/삭제할 때마다 매번 임시 파일에 잠깐 썼다가 기존 todos.json을 파일 통째로 다시 덮어 쓰는 것(파일에 이어쓰기가 아닌)으로 이해했는데 맞을까요? 혹시 제가 이해한 게 맞다면 실제 상용 앱에서는 Todo 데이터의 수정(Create, Update, Delete)이 발생할 때마다 파일 전체 덮어쓰기 및 그 disk I/O 지연으로 인해 앱 성능이나 기기 수명에 영향이 없을지, 영향이 있다면 그와 같은 이유로 앱 스토어 심사에서 등록이 거부되지는 않을까 궁금합니다. 추후 확장성 고려 시 빈번하게 데이터 추가/수정/삭제가 일어나면 FileManager를 더 공부해서 기존 todos.json 파일을 이어쓰게 하는 게 좋을까요?(iOS에서 지원하는지는 모르겠습니다만) 아니면 CoreData 같은 것을 쓰는 게 좋을까요?(배우기 어렵다던데… ㅠ) 감사합니다.
-
미해결야곰의 iOS 프로그래밍
todo앱 User Notification에서 질문이 있습니다
안녕하세요? todo앱을 new project를 열어서 강의를 따라하다 보니 AppDelegate에서 막혔습니다. if let navigationController: UINavigationController = self.window?.rootViewController as? UINavigationController, 구문에서 Type of expression is ambiguous without more context라는 에러가 떠서 이런저런 검색을 해보니 iOS 13부터인가 window에 대한 선언이 SceneDelegate.swift에 있다고 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {} 에서 window를 통해 rootViewController를 지정할 수 있다고 알게 되었습니다. 그런데 또 어떤 글은 앱이 완전히 구동하기 전에 User Notification Delegate 설정을 해줘야 한다고 AppDelegate.swift의 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {} 에서 delegate 설정을 완료해야 한다고 되어 있어서요. [질문 1] UNUserNotificationCenter.current().delegate = todosTableViewController 구문을 어디에 작성해야 되는지 궁금합니다. SceneDelegate에 있는 var window: UIWindow?를 AppDelegate에 선언을 해서 해결해도 될까요? [질문 2] 또한 UNUserNotification의 delegate는 앱에서 하나만 존재해야 하고 존재할 수 밖에 없는지요? todo앱에서 배운대로 조금씩 변경해 보고 있는데요. todosViewController에서와는 다른 유저 알림을 추가로 구현하고 싶다면 UNUserNotificationCenter.current().delegate = myViewController 이런 식으로 delegate를 해야 할 거 같은데 설정해야 위치가 AppDelegate 또는 SceneDelegate에서 설정해야 한다고 하니 UNUserNotificationCenter.current().delegate는 객체가 아니라 타입 프로퍼티(표현이 맞는 건지 모르겠네요)라서 앱별로 하나만 구현할 수 밖에 없는 건지도 궁금합니다. 강사님 강의 듣고 궁금한 것은 알려주신대로 도큐먼트랑 인터넷 검색해서 찾아보고 있는데 위에서 질문드린 부분들은 잘 못 찾겠어서 질문 드립니다.