我正在使用一个名为 Restkit 的 iOS 库,它会自动将远程对象映射到本地对象。您可以通过使用 KVC 模式创建映射,然后使用映射加载来做到这一点。
虽然我了解它是如何工作的,但我不明白为什么某些部分以某些方式实现。例如,它使用单例模式,您可以在其中创建RKObjectMapping的实例,如下所示:
RKObjectMapping* articleMapping = [RKObjectMapping mappingForClass:[Article class]];
[articleMapping mapKeyPath:@"title" toAttribute:@"title"];
[articleMapping mapKeyPath:@"body" toAttribute:@"body"];
[articleMapping mapKeyPath:@"author" toAttribute:@"author"];
[articleMapping mapKeyPath:@"publication_date" toAttribute:@"publicationDate"];
但是,当实际使用它时,您可以通过调用RKObjectManager类的 sharedManager 来访问管理器,如下所示:
[[RKObjectManager sharedManager].mappingProvider setMapping:articleMapping
forKeyPath:@"articles"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/articles"
delegate:self];
我不明白的是,为什么还要麻烦将类实例化为articleMapping,而您只需要使用sharedManager之类的类方法/变量来访问它?为什么不做类似的事情:
[RKObjectMapping initWithClass:[Article class]];
我是一个新手,所以认为有充分的理由采用我不知道的这种模式。任何人都知道或理解为什么会以这种方式实施?