用于 Objective-C 的字符串和对象编码。与 "socket" 同音。
使用 SOCKit 和 SOCPattern,您可以将对象转换为字符串,反之亦然。
SOCPattern* pattern = [SOCPattern patternWithString:@"api.github.com/users/:username/gists"];
[pattern stringFromObject:githubUser];
> @"api.github.com/users/jverkoey/gists"
SOCPattern* pattern = [SOCPattern patternWithString:@"github.com/:username"];
[pattern performSelector:@selector(initWithUsername:) onObject:[GithubUser class] sourceString:@"github.com/jverkoey"];
> <GithubUser> username = jverkoey
简直一模一样。
除了太棒了之外。它也与 Three20 的路由完全不兼容。如果您已经在 Three20 的路由技术中投入了大量精力,这有点令人沮丧,但有以下几个理由说明为什么 SOCKit 更好
以下是 Three20 和 SOCKit 之间的差异的简要说明,如果 SOCKit 被用作 Three20 的 URL 路由的后端。
Three20: [map from:@"twitter://tweet/(initWithTweetId:)" toViewController:[TweetController class]];
SOCKit: [map from:@"twitter://tweet/:id" toViewController:[TweetController class] selector:@selector(initWithTweetId:)];
Three20: [map from:[Tweet class] name:@"thread" toURL:@"twitter://tweet/(id)/thread"];
SOCKit: [map from:[Tweet class] name:@"thread" toURL:@"twitter://tweet/:id/thread"];
SOCKit 是 Nimbus 的一个兄弟项目,Nimbus 是一个轻量级且模块化的框架,可以让您轻松在 iOS 应用中开辟新道路。Nimbus 将很快在重新构想 Three20 的导航器时使用 SOCKit。
RESTKit 用户会注意到 SOCKit 提供了类似 RESTKit 的 RKMakePathWithObject 的功能。事实上,RKMakePathWithObject
和其背后的 RKPathMatcher
类都依赖于 SOCKit。
这个轻量级库构建得非常简单,可以直接集成到您的项目中。在 SOCKit.h 和 SOCKit.m 文件中,包含了您需要的一切功能,以便开始将字符串和对象进行映射。要开始使用 SOCKit,只需下载或 git checkout
SOCKit 仓库,将 SOCKit.h 和 SOCKit.m 拖动到项目的源文件树中。在您想使用 SOCKit 的地方 #import "SOCKit.h"
,然后开始进行一些疯狂的字符串与对象之间的编码。
在将对象编码为字符串时,通过在属性名前加冒号来定义参数。例如,如果您有一个具有 tweetId
属性的 Tweet 对象,模式参数名称看起来就是 :tweetId
。很简单。
但是现在假设您有一个包含对 TwitterUser 对象的引用的 Tweet 对象,并且该 TwitterUser 对象具有 username
属性。看看这个: :user.username
。如果您对我的一条推文进行了编码,并使用 SOCKit 模式,结果是字符串 @"featherless"
。KVC 真棒。
详细的文档可以在 SOCKit.h 头文件中找到。
如果您在 SOCKit 中发现了一个错误,请在 Github SOCKit 问题跟踪器 中提交问题。更好的是:如果您对这个错误有解决方案,请在 Github 上分叉项目并提交合并请求。