Swift 没有要求的协议的目的是什么?

Swift 没有要求的协议的目的是什么?,swift,Swift,我做了一个小的深潜水,发现了这个。空协议声明的意义是什么?我所能想到的就是组织,但这是唯一的原因吗?它有什么功能上的好处吗 这只是一种将不同类型的产品放在同一屋檐下的方式。获取结果请求可以返回四种类型中的任意一种:NSDictionary、NSManagedObject、NSManagedObjectID或NSNumber。我们需要一种方式来表达这一点。它们在其他方面是不相关的,所以让它们都采用一个共同的协议是一种方法 因此,NSFetchRequest可以是其中一种类型的泛型参数化,而无需说明

我做了一个小的深潜水,发现了这个。空协议声明的意义是什么?我所能想到的就是组织,但这是唯一的原因吗?它有什么功能上的好处吗


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

因此,NSFetchRequest可以是其中一种类型的泛型参数化,而无需说明它是哪一种类型

open class NSFetchRequest<ResultType> : 
    NSPersistentStoreRequest, NSCoding 
    where ResultType : NSFetchRequestResult {
开放类NSFETCH请求:
NSPersistentStoreRequest,NSCoding
其中ResultType:NSFetchRequestResult{

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

链接到不相关的可能对象。
扩展名NSNumber:NSFetchRequestResult{};扩展名NSDictionary:NSFetchRequestResult{};扩展名NSManagedObject:NSFetchRequestResult{};扩展NSManagedObjectID:NSFetchRequestResult{};
,然后
打开类NSFetchRequest:NSPersistentStoreRequest,NSCoding其中ResultType:NSFetchRequestResult{
,因此您拥有的不是“任何”,而是“有限的”结果类型@Larme和我认为这有助于提高效率?我在这里是piggy backing,但你知道NSFetchRequestResultType在这里扮演什么角色吗?它包含你提到的4种类型的常量,但它对我们开发人员来说非常有用,还是只对核心数据框架本身有用?@JoakimDanielson我想说这是以前的保留泛型。提取请求必须有某种方式来告诉您它返回的是哪种类型。:)但现在,在Swift中,您就知道了;提取请求本身是泛型的,所有东西都从那里级联而来。但我的核心数据体验并不深刻,所以我可能错了。