Objective-C utilities and shorthands.
Overline is not clone of other language features. Simple and clean Objective-C.
setup with cocoapods.
pod 'Overline'
import Overline.h
#import "Overline.h"
pod 'BlocksKit'
pod 'Overline-BlocksKit'
Ignored duplicate methods: each
map
reduce
filter
reject
NSArray *array = [NSArray arrayWithRangeFrom:0 to:10];
// @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9]
NSArray *array2 = [NSArray arrayWithRangeFrom:0 to:-10 step:2];
// @[@0, @-2, @-4, @-6, @-8]
arrayWithRangeFrom:to:
arrayWithRangeFrom:to:step:
NSArray *mapped = [@[@1,@2,@3,@4,@5,@6] mappedArrayUsingBlock:^id(id obj, NSUInteger idx) {
if ([obj integerValue] % 2 == 0) {
return obj;
}
return nil;
}];
// @[@2,@4,@6]
each
map
mappedArrayUsingBlock
reduce
reducedObjectByBlock
find
objectUsingBlock
filter
filteredArrayUsingBlock
reject
rejectedArrayUsingBlock
NSArray *shuffled = [@[@1,@2,@3,@4,@5,@6] shuffledArray];
shuffle
shuffledArray
anyObject
NSArray *reversed = [@[@1,@2,@3,@4,@5,@6] reversedArray];
// @[@6,@5,@4,@3,@2,@1]
reverse
reversedArray
objectAtReversedIndex
firstObject
subarrayFromIndex:
subarrayFromIndex:length:
subarrayToIndex:
uniqueObjects
uniqueObjectsUsingEqualsBlock
difference
arrayDifferenceWithArray
unionise
arrayByUnionisingArray
isEmpty
arraySortedDescending:
arraySortedAsc
arraySortedDesc
NSMutableArray *marray = [NSMutableArray arrayWithArray:@[@1,@2,@3]];
[marray insertObjects:@[@4,@5,@6] atIndex:1];
insertObjects:atIndex:
sortDescending:
sortAsc
sortDesc
currentWeekday
currentHour
currentMinute
currentSecond
currentDay
currentMonth
currentYear
commonDateComponentsForNow
timeComponentsForNow
weekday
hour
minute
second
day
month
year
commonDateComponents
timeComponents
NSDate *date = [JSON objectForKey:@"date8601" transformBlock:^id(id obj) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss Z"];
return [formatter dateFromString:obj];
}];
objectForKey:transformBlock:
numberForKey:
stringForKey:
arrayForKey:
dictionaryForKey:
dateForKey:
dateForKey:usingFormat:
since1970DateForKey:
timestampForKey:
boolObjectForKey:withTrueValue:
boolForKey:withTureValue:
boolForKey:
intForKey:
integerForKey:
unsignedIntForKey:
unsignedIntegerForKey:
longForKey:
unsignedLongForKey:
longLongForKey:
unsignedLongLongForKey:
doubleForKey:
floatForKey:
NSDictionary *dic = @{
@"a" : @1,
@"b" : @2,
@"c" : @3,
@"d" : @4
};
NSDictionary *filtered = [dic dictionaryFilteredByKeyUsingBlock:^BOOL(NSString *key) {
return [key isEqualToString:@"a"];
}]; // @{@"a":@1}
each:
map
mappedDictionaryUsingBlock
arrayMap
mappedArrayUsingBlock
filterKey
dictionaryFilteredByKeyUsingBlock
rejectKey
dictionaryRejectedByKeyUsingBlock
filterObject
dictionaryFilteredByObjectUsingBlock
rejectObject
dictionaryRejectedByObjectUsingBlock
merge
dictionaryByMergingDictionary
reduce:
reducedObjectUsingBlock:memo:
queryString
stringByFormattingQuery
/*
@{
@"error" : @{
@"message" : @"msg"
}
}
*/
NSString *s = [dic objectForPath:@"error.message"];
objectForPath:
NSSet *set = [NSSet setWithArray:@[@1,@2,@3,@4,@5,@6]];
NSSet *mapped = [set mappedSetUsingBlock:^id(id obj, NSUInteger idx) {
if ([obj integerValue] % 2 == 0) {
return obj;
}
return nil;
}];
each
map
mappedSetUsingBlock
reduce
reducedObjectByBlock
filter
filteredSetUsingBlock
reject
rejectedSetUsingBlock
[@"hoge=fuga&piyo=foo" componentsSeparatedByInnerString:@"=" andOuterString:@"&"];
/*
@{
@"hoge" : @"fuga",
@"piyo" : @"foo"
};
*/
componentsSeparatedByInnerString:andOuterString:
[@"https?" testInString:urlString];
rangeOfFirstMatchInString:
rangeOfFirstMatchInString:options:
matchesInString:
matchesInString:options:
testInString:
testInString:options:
replace:newString:
stringByReplacingOccurrencesOfRegExpPattern:withString
replace:newString:options:
stringByReplacingOccurrencesOfRegExpPattern:withString:options:
replace:template:
stringByReplacingOccurrencesOfRegExpPattern:withTemplate:
replace:template:options:
stringByReplacingOccurrencesOfRegExpPattern:withTemplate:options:
[@"hoge" md5]; // @"ea703e7aa1efda0064eaa507d9e8ab7e"
sha256
stringByHashingSha256
md5
stringByHashingMD5
URLEncode
stringByEncodingURL
URLDecode
stringByDecodingURL
trim
trim:
- Trim character set in a given string
NSString *JSONString = @"{\"hoge\" : \"fuga\" }";
id json = [JSONString jsonObject];
JSON
jsonObject
[@"a" stringByEncodingBase64]; // @"YQ=="
[@"YQ==" stringByDecodingBase64]; // @"a"
encodeBase64
stringByEncodingBase64
decodeBase64
stringByDecodingBase64
dataUsingDecodingBase64
base64Encode
stringUsingEncodingBase64
queryComponents
NSURL *pdfURL = [NSURL URLForUserDirectoryWithAppendedPath:@"myDoc.pdf"];
NSURL *userImageFolderURL = [NSURL URLForUserDirectoryWithAppendedPath:@"images"];
URLForDirectory:domainMask:
URLForApplicationSupportDataDirectory
URLForApplicationSupportWithAppendedPath:
URLForUserDirectory
URLForUserDirectoryWithAppendedPath:
URLForDocumentDirectory
;URLForDocumentDirectoryWithAppendedPath:
;
JSONForResourceName
[@1 isEqualToInteger:1];
isEqualToInt:
isEqualToInteger:
isEqualToUnsignedInt:
isEqualToUnsignedInteger:
isEqualToLong:
isEqualToLongLong:
isEqualToUnsignedLong:
isEqualToUnsignedLongLong:
isEqualToDouble:
isEqualToFloat:
userDefaultFormatter
dateFormatterWithCalendarIndetifiter:localeIdentifiter:timeZoneAbbreviation:
[[NSNull null] isNullObject]; // YES
[[NSArray array] isNullObject]; // NO
isNullObject
isArray
isDictionary
isSet
isString
isNumber
Provide NSNull
like nil
NSDictionary *dic = @{
@"null-key" : [NSNull null]
};
[[dic objectForKey:@"null-key"] objectForKey:@"empty"]; // nil
※ This feature disable on default. Define OV_USE_NATURAL_NULL
, if use this feature.
#define OV_USE_NATURAL_NULL
#import "Overline.h"
Be sure to thank these contributors:
- Kazuma Ukyo (Creator, http://yaakaito.org)
- Hari Karam Singh (Contributor, http://soundwandapp.com)
- Write tests.
- Objective-C style naming.
- and shorthands.