1

我需要实现一个自定义事件处理程序,它应该例如处理 URI,例如: - SomeAppName://SomeDomainClassName/ID 从数据库表中获取记录或 - SomeAppName://SomeControllerName/PushView/SomeAdditionalOptions 来推送视图控制器和设置附加选项,例如这可能是一个日历视图,它应该专注于在某个日期显示日历。

我一直在寻找现有的 REST 框架,但到目前为止,我还没有弄清楚任何现有的框架如何允许我定义 URI 的格式并将它们映射到本地类、操作,无论它是什么。

我如何 1) 定义和解释类似 URI 的 REST 以及 2) 将它们映射到本地操作或对象,而无需重新发明轮子(例如从 RESTKit 继承)?还是我应该最终编写自己的解析器?在这种情况下,欢迎指向良好 REST 的指针,例如 URI lex/flex。

4

1 回答 1

0

我一直在寻找的是 Ruby 世界中的 URL 路由器。Objective C 也有一些,或多或少有用。

我最终编写了一个自定义 URL 路由器,就像 ruby​​ URL 路由器基本上分为两个组件(路由器和路由)。对于路由器部分(可以说是映射器和 URL 调度程序),我查看了 TTURLMap,它是 Three20 的一部分,但丢弃了 90% 的代码并更改了操作处理以满足我的需要。它有很多样板代码,但基本上是我获得路由器想法所需要的。

对于特定的路由处理,我使用 SOCKit,它看起来很棒并且有经过良好测试的代码。

例如,现在我可以有一个本地函数 hello,它需要两个参数来显示一些作为 URL 传递的值:

Roter *router = [[Router alloc] init];
[router map:@"soc://:ident/:saySomething" toInstance:self with:@selector(hello:sayWhat:)];
[router dispatch:@"soc://3/hi"];

我也会添加块,但在大多数情况下,选择器工作得很好,因为 SOCKit 将基本参数类型的实际值传递给它们(无需使用来自 URL 的值来解析字典)。

于 2012-10-02T16:32:25.710 回答