- This topic has 2개 답변, 2명 참여, and was last updated 4 years, 3 months 전에 by jsj7878.
-
글쓴이글
-
-
jsj7878참가자
- 글작성 : 1
- 답글작성 : 1
안녕하세요 이번에 Coredata를 사용하여 앱을 만들고 있는 학생입니다.
다름이 아니라 제가 Coredata를 사용하여 정보를 저장하고 그 정보들을 배열형태로 사용하고 싶은데요
제가 Card라는 entitiy를 만들었고 여러개의 Card를 저장한 후 저장된 모든 Card들을 배열로 사용하고 싶어서
class HomeViewController: UIViewController {
var allCards = Card
func …(함수를 통해 Card를 모두 불러와서 allCards에 저장합니다.)
func ***(Card의 갯수(count)를 세어 tableview를 구성)
}
이런 형태로 만들던중에 작동은 잘 되지만
” failed to call designated initializer on nsmanagedobject class ‘Card’ “라는 에러가 발생하더군요
찾아보니 var allCards = Card를 var allCards : [Card]?로 바꾸면 해결된다고 하지만
제가 Card의 count를 사용해야되다보니 optional 문제에 걸려서 아래의 함수를 사용하기 어렵습니다..
init을 사용하자니 Card자료형이 아니라 [Card]형태라 init을 쓰기도 애매한거 같고.. 좋은 해결방안이 있을까요??
2020-08-08 오후 7:41 #28177 -
TTOzzi참가자
- 글작성 : 10
- 답글작성 : 13
음.. 해당 에러와 옵셔널처리는 관련이 없는 것 같은데..
어딘가에서 Card 인스턴스를 생성할 때 NSManagedObject 의 이니셜라이저를 호출하지 않고 다른 방식으로 생성해서 에러가 나온 것 같아요.
NSManagedObject 에If you instantiate a managed object directly, you must call the designated initializer init(entity:insertInto:).
이런 문구가 있네요.만약 옵셔널로 바꾸기만 하면 된다면 count 를 사용하기 전에 옵셔널 바인딩을 해주거나
(allCards.count ?? 0)
와 같이 옵셔널이 아닐 때의 값을 지정해주면 어떨까요?- 이 답변은 TTOzzi에 의해 4 years, 3 months 전에 수정됐습니다.
2020-08-08 오후 9:49 #28188
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.