我遇到的問題是,當它與我正在提取的實體有關係時,我無法訪問實體的屬性。Swift 3 - 核心數據 - 獲取結果控制器訪問關係屬性
關於我的應用程序,我創建了一個健身跟蹤應用程序,我有一個詳細的表視圖控制器跟蹤我的活動。當我點擊一個單元格時,視圖會進入另一個視圖控制器以顯示跟蹤位置的地圖。
使用抓取的結果控制器我抓取「Entity1」。當我點擊一個單元格'我想'時,我想繼續傳遞「Entity2」屬性值到另一個視圖控制器。除了從「ENTITY1」到「ENTITY2」的關係是「一對多」的關係,在對「ENTITY1」的核心數據的屬性,
extension Entity1
{
// instead of "Entity2" being represented as
// @NSManaged var entity2: Entity2?
//it is represented as
@NSManaged var entity2: NSOrderedSet?
}
因而我無法訪問「ENTITY2」屬性。
我如何獲取 「ENTITY1」:
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")
}
}
我將如何試圖訪問 「ENTITY2」 屬性。
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
}
要總結:我的問題是 - 如何挖掘的單元格是「ENTITY1」的描述,其中「ENTITY2」是關係到並訪問「ENTITY2」屬性值在我的地圖視圖來顯示數據控制器。
非常好 - 花了一點思考能夠弄清楚如何訪問屬性。在訪問數組時,類型轉換是解決方案 - 讓entity2 = entity1.entity2 as! ENTITY2。然後從那裏:) :) – lifewithelliott
因爲'entity2'在你的代碼片段中被聲明爲一個'NSMutableSet',所以我很驚訝類型化爲'Entity2'甚至編譯,更少的作品。 –
我的歉意 - 我忘記訪問實際的財產。在該評論中,它應該是'let entity2 = entity1.entity2.firstObject as! ENTITY2' – lifewithelliott