@mainpage FoundationExtension
此库包含小的 Cocoa/UIKit 扩展。此库不包含高级数据结构、算法或框架,而是代码片段的集合。
- 许多常见片段在方法调用中。
- 看起来像本机基础方法 - 它遵循 Apple 编码指南和基础命名规范。
请在 [Github] 上的文件中查看 [文档] (http://youknowone.github.com/FoundationExtension)
如何使用
- 编译后的库
- 构建项目
- 将 FoundationExtension 或 UIKitExtension 目标作为依赖项添加
- 直接源
- 将您需要的文件添加到项目中
- CocoaPod ~> 1.7.5
如果您的编译器是 gcc 或旧版 clang,请将 '-force_load' 添加到静态库。
下载编辑
git clone git://github.com/youknowone/FoundationExtension.git
cd FoundationExtension
git submodule update --init
为什么有用
使您的代码更短!不要让邪恶的 objc 使得您的代码冗长。此库包含许多常见工作的快捷方式。
从URL中获取NSData
Foundation框架
NSString *URLString = [NSSring stringWithFormat:@"http://"HOST_URL"/api/%@", key];
NSURL *URL = [NSURL URLWithString:URLString];
FoundationExtension
NSURL *URL = [[@"http://"HOST_URL"/api/%@" format:key] URL];
@see NSString(缩写) @see NSString(NSURL)
iPhone MAC地址
Foundation框架
- 无解。
FoundationExtension
[[UIDevice currentDevice] MACAddress]
@see UIDevice(缩写)
performSelector,使用3个对象
Foundation框架
- 无解。应使用
FoundationExtension
[obj performSelector:sel withObject:o1 withObject:o2 withObject:o3];
@see NSObject(ObjCRuntime)
从POST请求中获取NSData
Foundation框架
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:@"field1=value1"];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];
FoundationExtension
NSData *data = [NSData dataWithContentsOfURL:URL postBody:@{@"field1":@"value1"} encoding:NSUTF8StringEncoding];
@see NSData(NSURLRequest)
从Multipart表单POST中获取NSData
Foundation框架
- 无解。
FoundationExtension
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPMultiPartFormPostBody:@{@"filename":data} encoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithContentOfURLRequest:request];
@see NSURLRequestAdditions.h
在数组中截断字符串
Foundation框架
NSMutableArray *newArray = [NSMutableArray array];
for (NSString *s in array) {
[newArray addObject:[s substringToIndex:20]];
}
Foundation扩展 NSArray
NSArray *newArray = [array arrayByMappingOperation:^(NSString *obj){ [obj substringToIndex:20]; }];
Foundation扩展 NSMutableArray
[array map::^(NSString *obj){ [obj substringToIndex:20]; }];
@see @ref Map/Filter/Reduce @see NSAFunctional.h
获取类名
Foundation框架
NSString *className = [NSString stringWithUTF8String:class_getName(obj.class)];
FoundationExtension
NSString *className = obj.class.name;
@see @ref NSObject(ObjCRuntime) @see @ref NSObject(ObjCRuntimeClass)
从十六进制字符串获取十六进制值
Foundation框架
int value;
sscanf(string.UTF8String, "%x", &value);
FoundationExtension
NSInteger value = [string hexadecimalValue];
@see @ref NSData(Serialization)
关于十二进制字符串
Foundation框架
- 为什么基础库需要有这个特性呢?
FoundationExtension
NSInteger value = [string integerValueBase:12];
@see @ref NSString(Evaluation)
md5散列值
Foundation框架
unsigned char hashedChars[CC_MD5_DIGEST_LENGTH];
CC_MD5([data bytes], (CC_LONG)[self length], hashedChars);
NSMutableString *result = [[NSMutableString alloc] init];
for ( int i = 0; i<CC_MD5_DIGEST_LENGTH; i++ ) {
[result appendFormat:@"%02x", *(hashedChars+i)];
}
FoundationExtension
NSString *result = [data digestStringByMD5];
@see @ref NSData(CommonCrypto)
从HTTP POST请求中解码plist字典
Foundation框架
- 从NSURLRequest获取数据。嗯...那么现在我该怎么做呢?(使用NSPropertyListSerialization)
FoundationExtension
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPPostBody:@{@"key1":@"value1"} encoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithContentOfURLRequest:request];
NSDictionary *dictionary = [NSDictionary dictionaryWithData:data];
@see @ref NSMutableURLRequest(HTTPMethod) @see @ref NSData(NSURLRequest) @see @ref NSDictionary(NSData)
从HTML颜色代码获取UIColor
UIKitExtension
UIColor *color = [UIColor colorWithHTMLExpression:@"#f0f0f0"];
@see @ref UIColor(HTMLColor)
改为使用新的实现
FoundationExtension
[class methodObjectForSelector:@selector(method1)].implementation
= [class methodObjectForSelector:@selector(method2)].implementation;
// now [obj method1] equals [obj method2]
@参阅 NSAMethod
获取私有变量的可访问性。
FoundationExtension
@interface Secret: NSObject { @private id _attr; } @end // #1 remember the '_attr'
// Hack the Secret!
@interface Secret (Accessor)
@property
(nonatomic, retain) id attr; // #2 remember the 'attr'
@end
@implementation Secret (Accessor)
NSAPropertyGetter(attr, "_attr") // #2, #1 to create getter
NSAPropertyRetainSetter(setAttr, "_attr") // #2, #1 to create getter
@end
@参阅 NSObject(ObjCRuntime)
更多内容
查看文档! [http://youknowone.github.com/FoundationExtension] (http://youknowone.github.com/FoundationExtension)