0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CoreData周りのエラーに苦しんだ記録

Posted at

警告
個人の備忘録なので
色々とっ散らかってるがあしからず

前提情報

とあるiPhoneアプリの個人開発を開始した

その前段階として、Webクローリングして
ローカルにデータベースを作成する必要が出てきた
と言うわけで、現在デスクトップWebクローラーアプリを開発中

そこで起きたエラーについてのエントリー

発生したエラーとその対応

コードを書き終わって
実行した際に
@main
の箇所で

Thread 1: Fatal error: UnsafeRawBufferPointer with negative count

が発生

これは
属性の型とオプショナル設定の不一致
が原因

Optionalは属性には
Xcodeのxcdatamodeldの設定から
AttributeのOptionalにきちんとチェックを入れなければならない

「Editor」メニューから「Create NSManagedObject Subclass...」を実行して、クラスを再生成してから再ビルド

すると今度は

'『エンティティ名』' is ambiguous for type lookup in this context

となってしまう

そこで
NSManagedObjectサブクラスを自動生成せず、手動で実装することに

CoreDataモデルのエディタで

  1. エンティティ名を変更
  2. Identityインスペクタで「Module」欄に「『AppName』」を入力
  3. また「Class」欄に「新エンティティ名」の明確な名前を設定
  4. コード内のエンティティ名を新エンティティ名に変更

しかし、同じく

'『新エンティティ名』' is ambiguous for type lookup in this context

となる

より根本的な対応

  1. モジュール修飾名を使う
    各ファイルで新エンティティ名の前にモジュール名を明示的に付ける

  2. CoreDataモデルの再確認
    xcdatamodeldファイルを開き
    「Codegen」設定が「Manual/None」になっているか確認


ようやく解決

最後に

CoreData周りはエラーが発生しやすい
エラーが発生したらEntityの設定を見直し
一つづつ解決していく

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?