簡體   English   中英

請幫助協議代碼沒有意義

[英]Please help protocol code that does not make sense

我對這個聲明的一部分感到困惑:

@property(nonatomic, readonly) NSArray <id<NSFetchedResultsSectionInfo>>*sections

此屬性屬於 NSFetchedResultsController 類。 雖然 NSFetchedResultsSectionInfo 是一個協議,但id<NSFetchedResultsSectionInfo>是一個必須符合 NSFetchedResultsSectionInfo 協議的對象類型。 id<NSFetchedResultsSectionInfo>不是協議,因此將它們括在尖括號<id<NSFetchedResultsSectionInfo>>是沒有意義的。 語句 NSArray <id<NSFetchedResultsSectionInfo>>對我來說沒有意義,因為如何使對象類型 id 成為 NSArray 類的協議。 有人可以對此有所了解嗎? 謝謝。

該語法實際上並不意味着數組符合任何協議。 該符號具有誤導性。 它只是告訴你,數組的值是id並符合NSFetchedResultsSectionInfo協議。

文件指出:

Sections 數組中的對象實現了 NSFetchedResultsSectionInfo 協議。

您需要確保它只包含指定類型的值,並且編譯器會告訴您如果您這樣做,您正在嘗試插入不兼容的對象。

您可能需要查看此Apple 文檔的最后一部分。

例如,如果您正在編寫使用 Core Data 框架的 iOS 應用程序,您可能會遇到 NSFetchedResultsController 類。 此類旨在幫助數據源對象向 iOS UITableView 提供存儲的數據,從而輕松提供諸如行數之類的信息。

如果你正在使用一個內容被分成多個部分的表格視圖,你還可以向 fetched results controller 詢問相關的部分信息。 NSFetchedResultsController 類不是返回包含此部分信息的特定類,而是返回一個匿名對象,該對象符合 NSFetchedResultsSectionInfo 協議。 這意味着仍然可以查詢對象以獲取您需要的信息,例如部分中的行數

盡管您不知道 sectionInfo 對象的類,但 NSFetchedResultsSectionInfo 協議規定它可以響應 numberOfObjects 消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM