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]eachmapmappedArrayUsingBlockreducereducedObjectByBlockfindobjectUsingBlockfilterfilteredArrayUsingBlockrejectrejectedArrayUsingBlock
NSArray *shuffled = [@[@1,@2,@3,@4,@5,@6] shuffledArray];shuffleshuffledArrayanyObject
NSArray *reversed = [@[@1,@2,@3,@4,@5,@6] reversedArray];
// @[@6,@5,@4,@3,@2,@1]reversereversedArrayobjectAtReversedIndex
firstObject
subarrayFromIndex:subarrayFromIndex:length:subarrayToIndex:uniqueObjectsuniqueObjectsUsingEqualsBlock
differencearrayDifferenceWithArrayunionisearrayByUnionisingArray
isEmpty
arraySortedDescending:arraySortedAscarraySortedDesc
NSMutableArray *marray = [NSMutableArray arrayWithArray:@[@1,@2,@3]];
[marray insertObjects:@[@4,@5,@6] atIndex:1];insertObjects:atIndex:
sortDescending:sortAscsortDesc
currentWeekdaycurrentHourcurrentMinutecurrentSecondcurrentDaycurrentMonthcurrentYearcommonDateComponentsForNowtimeComponentsForNow
weekdayhourminuteseconddaymonthyearcommonDateComponentstimeComponents
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:mapmappedDictionaryUsingBlockarrayMapmappedArrayUsingBlockfilterKeydictionaryFilteredByKeyUsingBlockrejectKeydictionaryRejectedByKeyUsingBlockfilterObjectdictionaryFilteredByObjectUsingBlockrejectObjectdictionaryRejectedByObjectUsingBlockmergedictionaryByMergingDictionaryreduce:reducedObjectUsingBlock:memo:queryStringstringByFormattingQuery
/*
@{
@"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;
}];eachmapmappedSetUsingBlockreducereducedObjectByBlockfilterfilteredSetUsingBlockrejectrejectedSetUsingBlock
[@"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:withStringreplace:newString:options:stringByReplacingOccurrencesOfRegExpPattern:withString:options:replace:template:stringByReplacingOccurrencesOfRegExpPattern:withTemplate:replace:template:options:stringByReplacingOccurrencesOfRegExpPattern:withTemplate:options:
[@"hoge" md5]; // @"ea703e7aa1efda0064eaa507d9e8ab7e"sha256stringByHashingSha256md5stringByHashingMD5
URLEncodestringByEncodingURLURLDecodestringByDecodingURL
trimtrim:- Trim character set in a given string
NSString *JSONString = @"{\"hoge\" : \"fuga\" }";
id json = [JSONString jsonObject];JSONjsonObject
[@"a" stringByEncodingBase64]; // @"YQ=="
[@"YQ==" stringByDecodingBase64]; // @"a"encodeBase64stringByEncodingBase64decodeBase64stringByDecodingBase64dataUsingDecodingBase64
base64EncodestringUsingEncodingBase64
queryComponents
NSURL *pdfURL = [NSURL URLForUserDirectoryWithAppendedPath:@"myDoc.pdf"];
NSURL *userImageFolderURL = [NSURL URLForUserDirectoryWithAppendedPath:@"images"];URLForDirectory:domainMask:URLForApplicationSupportDataDirectoryURLForApplicationSupportWithAppendedPath:URLForUserDirectoryURLForUserDirectoryWithAppendedPath:URLForDocumentDirectory;URLForDocumentDirectoryWithAppendedPath:;
JSONForResourceName
[@1 isEqualToInteger:1];isEqualToInt:isEqualToInteger:isEqualToUnsignedInt:isEqualToUnsignedInteger:isEqualToLong:isEqualToLongLong:isEqualToUnsignedLong:isEqualToUnsignedLongLong:isEqualToDouble:isEqualToFloat:
userDefaultFormatterdateFormatterWithCalendarIndetifiter:localeIdentifiter:timeZoneAbbreviation:
[[NSNull null] isNullObject]; // YES
[[NSArray array] isNullObject]; // NOisNullObjectisArrayisDictionaryisSetisStringisNumber
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.