FoundationExtension 2.1.0

FoundationExtension 2.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 NOASSERTION
发布上次发布2019年10月

Jeong YunWon维护。



@mainpage FoundationExtension

Build Status

这个库包含了一些小的 Cocoa/UIKit 扩展。这个库不包含高级数据结构、算法或框架,但 是代码片段的集合。

  • 方法调用中包含了许多常见片段。
  • 看起来像是原生的 foundation 方法 - 它遵循 Apple 编码规范和 Foundation 命名约定。

请参阅 [Github] 上的文档(http://youknowone.github.com/FoundationExtension

如何使用

  • 编译后的库
    1. 构建项目
    2. 将 FoundationExtension 或 UIKitExtension 作为依赖项添加为目标
  • 直接源码
    1. 将您需要的文件添加到项目中
  • CocoaPod ~> 1.7.5
    1. 访问并关注 https://cocoapods.org.cn/

如果您的编译器是 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];

参见 @ref NSString(快捷方式) @see @ref NSString(NSURL)

iPhone MAC地址

Foundation

  • 无法做到。

FoundationExtension

[[UIDevice currentDevice] MACAddress]

参见 @ref UIDevice(快捷方式)

performSelector, with 3 object

Foundation

  • 无法做到。您应该使用 <objc/runtime.h>

FoundationExtension

[obj performSelector:sel withObject:o1 withObject:o2 withObject:o3];

参见 @ref 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];

参见 @ref NSData(NSURLRequest)

从Multipart Form POST获取NSData

Foundation

  • 无法做到。

FoundationExtension

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPMultiPartFormPostBody:@{@"filename":data} encoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithContentOfURLRequest:request];

参见 NSURLRequestAdditions.h

截断数组中的字符串

Foundation

NSMutableArray *newArray = [NSMutableArray array];
for (NSString *s in array) {
    [newArray addObject:[s substringToIndex:20]];
}

FoundationExtension NSArray

NSArray *newArray = [array arrayByMappingOperation:^(NSString *obj){ [obj substringToIndex:20]; }];

FoundationExtension NSMutableArray

[array map::^(NSString *obj){ [obj substringToIndex:20]; }];

参见 @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

UIKit扩展

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)