Drupal8 iOS SDK 是一个用于原生 iOS 应用与 Drupal 网络服务器通信的库。
当前库使用 AFNetworking 与服务器通信。
该库的主要目的是使得与基于 Drupal 8 的服务器通讯尽可能的简单和直观。
您可以直接调用
- [DrupalEntity pushToServer] //to post data to server.
- [DrupalEntity pullFromServer] //to pull data from server.
- [DrupalEntity deleteFromServer] //to remove data from server.
- [DrupalEntity patchServerData] //to patch patch data to server.
除了实体 API 提供了一些更实用的结构:NSArray
/ NSDictionary
可以管理 Drupal 和非 Drupal 实体,并提供所有 DrupalEntity 方法,如 post,push,pull,delete。
库会自动序列化/反序列化对象,包括附件对象和对象数组。因为 Objective-C 不支持强类型数组,所以您必须实现方法:- (Class)classOfItems:(NSString *)propertyName
并返回数组中对象的类。
DrupalEntity
对象或对象数组(取决于响应)。
包含服务器基本 URL 的对象,并且负责生成和发送服务器请求。您需要在使用 DrupalEntity 实例进行操作之前设置 DrupalAPIManager.baseURL
。
类别扩展了 AFNetworking
的管理器,并用于 DrupalAPIManager。将会改进和扩展以支持登录方案。
如果字段不应该序列化或反序列化,则重写方法 - (BOOL)isPropertyTransient:(NSString *)propertyName
并为所需属性名称返回 YES。
要实现Drupal实体,只需扩展DrupalEntity
并实现以下方法:
此方法将返回服务器的实体相对路径。
- (NSString *)path {
return [NSString stringWithFormat:@"node/%@", self.nid]
;}
如果需要,此方法将返回项目获取参数。
- (NSDictionary *)requestGETParams {
return @{@"page": self.page};
}
[DrupalAPIManager sharedDrupalAPIManager].baseURL = [NSURL URLWithString:@"http://myserver.com"];
BlogPage *bp = [BlogPage new];
bp.page = @(page);
[bp pullFromServer:nil];
要运行示例项目;克隆仓库,并首先从示例目录中运行pod install
。
LSDrupalSDK在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。