[解決済み] CoreData: 警告。という名前のクラスがロードできない
質問
Xcode 6.1 を使用して、既存の Objective-C テレビ番組アプリを新しい Swift バージョンに複製していますが、CoreData でいくつかの問題があります。
私は 4 つのエンティティのモデルを作成し、それらの NSManagedObject サブクラスを (Swift で) 作成し、すべてのファイルに適切なアプリ ターゲットが (「ソースをコンパイルする」ために) 設定されています。
新しいエンティティを挿入しようとすると、まだこのエラーが発生します。
CoreData: 警告。Shows' という名前のクラスがエンティティ 'Shows' という名前のクラスをロードできません。 クラスが見つからないため、代わりにデフォルトの NSManagedObject を使用しています。
少しコメントします。
Core Dataに保存するとき、私はバックグラウンドスレッドを可能にするために親子コンテキストの方法を使用します。私はこれを、ManagedObjectContextを使用して設定することによって行います。
lazy var managedObjectContext: NSManagedObjectContext? = {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
let coordinator = self.persistentStoreCoordinator
if coordinator == nil {
return nil
}
var managedObjectContext = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
を使って、データを保存することで
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
var context = NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)
context.parentContext = self.managedObjectContext!
...rest of core data saving code here...
})
どのように解決するのですか?
この警告は、Swift の実装の詳細が調整されている間、私たちが対処しなければならない奇妙な現象の 1 つです。警告は意図的に発生します。つまり、以下に概説するステップに従わない場合でも、セットアップはうまくいくかもしれません。
私はほとんどの場合、これを取り除くことができました。
クラスがモデルエディターで正しく設定されていることを確認することにより
. 他の多くのSOF投稿(この質問に対する回答も含む)とは異なり、モジュール名を含めるという提案(例えば
MyApp.Shows
のように)モジュール名を含めるという提案には
ではなく
に助けられた。
この3つの項目を確認してください。
1.
Xcode 7 beta 3 まで動作するバージョン。
エンティティ名をより適切な単数形に修正したことに注意してください。
Xcode 7.1 の Swift 2.0 で動作するバージョンです。
(Xcode 7 beta 4 以上で動作するはずです)
Moduleの中の"Current Product Module"のテキストを削除する必要があります!
2.
また、頻繁に推奨されているように
@objc(Show)
あなたのクラスのすぐ上にある
注意 : Xcode 7 beta 4 以降を使用している場合、このステップは任意です。
3.
また、必ず
キャスト
を適切なクラスへキャストしてください。
NSManagedObject
.
var newShow = NSEntityDescription.insertNewObjectForEntityForName("Show",
inManagedObjectContext: context) as Show
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スレッドコンテンションとは何ですか?
-
[解決済み] POSIXシステムでのゾンビスレッド
-
[解決済み] "フリースレッド "と "スレッドセーフ "の違いについて
-
[解決済み] デッドロックとは何ですか?
-
[解決済み】「スレッド」とは(本当は)何ですか?)
-
[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?
-
[解決済み】Redisはシングルスレッドですが、同時I/Oはどのように行うのですか?
-
[解決済み] NSManagedObjectの特定のサブクラスを見つけることができません。
-
[解決済み] 「executeFetchRequestで「コレクションは列挙中に変異しました。
-
[解決済み] Re-entrantロックとは何ですか?