首页 > 解决方案 > 没有要求的协议的目的是什么?

问题描述

做了一点深潜,我遇到了这个。空协议声明的意义何在?我能想到的只有组织,但这是唯一的原因吗?它有任何功能上的好处吗?

在此处输入图像描述

标签: swift

解决方案


这只是将不同类型集中在一个屋檐下的一种方式。获取结果请求可以返回以下四种类型中的任何一种:NSDictionary、NSManagedObject、NSManagedObjectID 或 NSNumber。我们需要一种表达方式。它们在其他方面是不相关的,因此让它们都采用通用协议是一种方法。

因此,NSFetchRequest 能够对其中一种类型进行泛型参数化,而无需说明它是哪一种。

open class NSFetchRequest<ResultType> : 
    NSPersistentStoreRequest, NSCoding 
    where ResultType : NSFetchRequestResult {

无论 ResultType 是什么,它都必须符合 NSFetchRequestResult ——这意味着(目前)它是这四个类之一。


推荐阅读