フェッチされている問題は、フェッチしているエンティティとの関係でエンティティの属性にアクセスできないことです。Swift 3 - コアデータ - フェッチ結果コントローラアクセス関係属性
私のアプリに関連して、私はフィットネス追跡アプリケーションを作成しています、私は追跡されたアクティビティで詳細テーブルビューコントローラを持っています。セルをタップすると、ビューは別のView Controllerに移動し、追跡された位置のマップを表示します。
フェッチされた結果コントローラを使用して、私は "Entity1"をフェッチしています。私がセルをタップすると、私は&の "Entity2"属性値を別のView Controllerに渡したいと思っています。 「Entity2は」関係「多くのために」と「Entity1」のためのコアデータのプロパティであるために「Entity1」からの関係を除き、
extension Entity1
{
// instead of "Entity2" being represented as
// @NSManaged var entity2: Entity2?
//it is represented as
@NSManaged var entity2: NSOrderedSet?
}
ので、私は「Entity2」プロパティにアクセスすることはできません。私は "Entity2" プロパティにアクセスしようとどのように
func fetchEntity1ResultsController(_ context: NSManagedObjectContext)
{
let request: NSFetchRequest<Entity1> = NSFetchRequest(entityName: "Entity1")
request.sortDescriptors = [ NSSortDescriptor(key: "timestamp", ascending: false) ]
fetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController?.delegate = self
do
{
try fetchedResultsController?.performFetch()
}
catch
{
print("Couldn't fetch results controller")
}
}
:私は "Entity1" をフェッチする方法
。
private func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
guard let entity1 = fetchedResultsController?.object(at: indexPath) else { return }
entity1.entity2.//No core data properties listed here
}
は結論するには:私の質問は - 私は「Entity2は」私のマップビューでそのデータを表示するために、アクセス「Entity2」属性値との関係である「Entity1」の記述があるセルをタップすることができますどのようにコントローラ。
優秀 - 少しアクセスしてプロパティにアクセスする方法を考え出すことができました。配列にアクセスするときに、型キャスティングが解決策でした - entity2 = entity1.entity2を!エンティティ2。そこから行った: – lifewithelliott
'entity2'はあなたのコードスニペットで' NSMutableSet'として宣言されているので、 'Entity2'への型キャストはコンパイルされず、はるかに少ない仕事に驚いています。 –
私の謝罪 - 私は実際の不動産にアクセスするのを忘れました。そのコメントでは、 'let entity2 = entity1.entity2.firstObject!エンティティ2 ' – lifewithelliott