10

これはXCode 6およびSwift用です...

管理対象オブジェクト コンテキストにフェッチ リクエストを送信しようとしていますが、正しいサブクラスが返されません。

データ モデル データ モデラー構成のサブクラスをカスタム サブクラスの名前に既に設定しており、コードでは NSManagedObject クラスを拡張しています。

何か案は?

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

23

解決策を考え出しただけです。

@objcクラスが Objective-C と互換性を持つようにするには、属性を追加する必要がありました。

現在、フェッチリクエストは正しい結果を返していますTasks[]

import Foundation
import CoreData

@objc(Task) // make compatible with objective-c
class Task : NSManagedObject
{
    @NSManaged var note: String!
    @NSManaged var completed: Bool
}

参照: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-XID_36

于 2014-06-06T05:20:26.617 に答える
8

を使用@objc(Task)して動作しているようですが、データモデルのデータモデラー構成を編集して、名前ToDoList.Taskだけではなく名前にすることもできますTaskTaskObjective-Cコードの他の場所で使用されている場合、それも機能し、クラスの競合を回避します。

于 2014-06-14T19:26:22.933 に答える
1

モデルでタスクが選択されているときに、「エンティティ」インスペクター (画面の右側、ユーティリティ ペイン) で、そのクラス フィールドに「タスク」が正しく入力されていることを確認します (デフォルトでは空白です)。

于 2014-06-06T03:36:19.827 に答える