[IOS] common functions for iOS development

Source: Internet
Author: User

1. Obtain the local language

+ (NSString *)getLocalLanguage{    NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];    return language;}

2. Obtain the MAC address

// returns the local MAC address.+ (NSString*) macAddress:(NSString*)interfaceNameOrNil{    // uses en0 as the default interface name    NSString* interfaceName = interfaceNameOrNil;    if (interfaceName == nil)    {        interfaceName = @"en0";    }        int                 mib[6];    size_t              len;    char                *buf;    unsigned char       *ptr;    struct if_msghdr    *ifm;    struct sockaddr_dl  *sdl;        mib[0] = CTL_NET;    mib[1] = AF_ROUTE;    mib[2] = 0;    mib[3] = AF_LINK;    mib[4] = NET_RT_IFLIST;        if ((mib[5] = if_nametoindex([interfaceName UTF8String])) == 0)    {        printf("Error: if_nametoindex error\n");        return NULL;    }        if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0)    {        printf("Error: sysctl, take 1\n");        return NULL;    }        if ((buf = malloc(len)) == NULL)    {        printf("Could not allocate memory. error!\n");        return NULL;    }        if (sysctl(mib, 6, buf, &len, NULL, 0) < 0)    {        printf("Error: sysctl, take 2");        free(buf);        return NULL;    }        ifm = (struct if_msghdr*) buf;    sdl = (struct sockaddr_dl*) (ifm + 1);    ptr = (unsigned char*) LLADDR(sdl);    NSString *outstring = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",                           *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    free(buf);        return outstring;}

3. Get Time Difference on Weibo (several days ago, several hours ago, several minutes ago)

+ (Nsstring *) gettimediffstring :( nstimeinterval) timestamp {nscalendar * Cal = [nscalendar currentcalendar]; nsdate * todate = [nsdate expires: Timestamp]; nsdate * today = [nsdate date]; // current time unsigned int unitflag = nsdaycalendarunit | nshourcalendarunit | nsminutecalendarunit; nsdatecomponents * Gap = [Cal components: unitflag fromdate: Today todate: todate options: 0]; // calculate the time difference if (ABS ([Gap Day])> 0) {return [nsstring stringwithformat: @ "% d days ago", ABS ([Gap Day])];} else if (ABS ([gap hour])> 0) {return [nsstring stringwithformat: @ "% d Hours Ago", ABS ([gap hour])];} else {return [nsstring stringwithformat: @ "% D Minutes Ago", ABS ([gap minute])];}

4. Calculate the number of words in a string.

+ (int)countWords:(NSString*)s{    int i,n=[s length],l=0,a=0,b=0;    unichar c;    for(i=0;i<n;i++){        c=[s characterAtIndex:i];        if(isblank(c))        {            b++;        }else if(isascii(c))        {            a++;        }else        {            l++;        }    }    if(a==0 && l==0)    {        return 0;    }    return l+(int)ceilf((float)(a+b)/2.0);}

5. Screen and save to album

+ (Uiimage *) saveimagefromview :( uiview *) view {uigraphicsbeginimagecontextwitexceptions (view. bounds. size, yes, view. layer. contentsscale); [view. layer renderincontext: uigraphicsgetcurrentcontext ()]; uiimage * image = encrypt (); uigraphicsendimagecontext (); Return image;} + (void) savephotosalbum :( uiimage *) image {encrypt (image, self, @ selector (Images Avedtophotosalbum: didfinishsavingwitherror: contextinfo :), nil);} + (void) preview :( uiview *) view {uiimage * image = [self saveimagefromview: View]; [self savephotosalbum: image];}-(void) imagesavedtophotosalbum :( uiimage *) image didfinishsavingwitherror :( nserror *) Error contextinfo :( void *) contextinfo {nsstring * message; nsstring * Title; If (! Error) {Title = @ "Success prompt"; message = @ "successfully saved to phase";} else {Title = @ "Failure prompt"; message = [error description];} uialertview * Alert = [[uialertview alloc] initwithtitle: Title message: Message delegate: Nil cancelbuttontitle: @ "know" otherbuttontitles: Nil]; [alert show]; [alert release];}

5. Obtain the timestamp of this month, this week, and the first day of this quarter.

+ (unsigned long long)getFirstDayOfWeek:(unsigned long long)timestamp{    NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp];    NSCalendar *cal = [NSCalendar currentCalendar];    NSDateComponents *comps = [cal                               components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit | NSWeekdayCalendarUnit |NSWeekdayOrdinalCalendarUnit                               fromDate:now];    if (comps.weekday <2)    {        comps.week = comps.week-1;    }    comps.weekday = 2;    NSDate *firstDay = [cal dateFromComponents:comps];    return [firstDay timeIntervalSince1970];}+ (unsigned long long)getFirstDayOfQuarter:(unsigned long long)timestamp{    NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp];    NSCalendar *cal = [NSCalendar currentCalendar];    NSDateComponents *comps = [cal                               components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit                               fromDate:now];    if (comps.month <=3)    {        comps.month =  1;    }    else if(comps.month<=6)    {        comps.month =  4;    }    else if(comps.month<=9)    {        comps.month =  7;    }    else if(comps.month<=12)    {        comps.month =  10;    }            comps.day = 1;    NSDate *firstDay = [cal dateFromComponents:comps];    return [firstDay timeIntervalSince1970]*1000;}+ (unsigned long long)getFirstDayOfMonth:(unsigned long long)timestamp{    NSDate *now = [NSDate dateWithTimeIntervalSince1970:timestamp/1000];    NSCalendar *cal = [NSCalendar currentCalendar];    NSDateComponents *comps = [cal                               components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit                               fromDate:now];    comps.day = 1;    NSDate *firstDay = [cal dateFromComponents:comps];    return [firstDay timeIntervalSince1970]*1000;}

6. Determine whether to jailbreak

static const char * __jb_app = NULL;+ (BOOL)isJailBroken{static const char * __jb_apps[] ={"/Application/Cydia.app", "/Application/limera1n.app", "/Application/greenpois0n.app", "/Application/blackra1n.app","/Application/blacksn0w.app","/Application/redsn0w.app",NULL};__jb_app = NULL;// method 1    for ( int i = 0; __jb_apps[i]; ++i )    {        if ( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:__jb_apps[i]]] )        {__jb_app = __jb_apps[i];return YES;        }    }    // method 2if ( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ){return YES;}// method 3if ( 0 == system("ls") ){return YES;}    return NO;}+ (NSString *)jailBreaker{if ( __jb_app ){return [NSString stringWithUTF8String:__jb_app];}else{return @"";}}

7. Define the macro of the singleton

#undefAS_SINGLETON#define AS_SINGLETON( __class ) \+ (__class *)sharedInstance;#undefDEF_SINGLETON#define DEF_SINGLETON( __class ) \+ (__class *)sharedInstance \{ \static dispatch_once_t once; \static __class * __singleton__; \dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \return __singleton__; \}

8. Network status detection

- (void)reachabilityChanged:(NSNotification *)note {    Reachability* curReach = [note object];    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);    NetworkStatus status = [curReach currentReachabilityStatus];        if (status == NotReachable)    {            }    else if(status == kReachableViaWiFi)    {            }    else if(status == kReachableViaWWAN)    {            }    }- (void)setNetworkNotification{    [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(reachabilityChanged:)                                                 name: kReachabilityChangedNotification                                               object: nil];    _hostReach = [[Reachability reachabilityWithHostName:@"http://www.baidu.com"] retain];    [_hostReach startNotifier];}

9. add push messages

-(Void) setpushnotification {[[uiapplication sharedapplication] metadata: uiremotenotificationtypealert | uiremotenotiftypetypebadge | uiremotenotiftypetypesound];}-(void) Application :( uiapplication *) Application metadata :( nsdata *) devicetoken {nslog (@ "Get devicetoken: % @", devicetoken);}-(void) Application :( uiapplication *) Application didfailtoregisterforremotenotificationswitherror :( nserror *) error {nslog (@ "failed to get token, error: % @", error );}

10, hexadecimal color to uicolor

+ (UIColor *)colorWithHex:(NSString *)hex {// Remove `#` and `0x`if ([hex hasPrefix:@"#"]) {hex = [hex substringFromIndex:1];} else if ([hex hasPrefix:@"0x"]) {hex = [hex substringFromIndex:2];}// Invalid if not 3, 6, or 8 charactersNSUInteger length = [hex length];if (length != 3 && length != 6 && length != 8) {return nil;}// Make the string 8 characters long for easier parsingif (length == 3) {NSString *r = [hex substringWithRange:NSMakeRange(0, 1)];NSString *g = [hex substringWithRange:NSMakeRange(1, 1)];NSString *b = [hex substringWithRange:NSMakeRange(2, 1)];hex = [NSString stringWithFormat:@"%@%@%@%@%@%@ff",   r, r, g, g, b, b];} else if (length == 6) {hex = [hex stringByAppendingString:@"ff"];}CGFloat red = [[hex substringWithRange:NSMakeRange(0, 2)] _hexValue] / 255.0f;CGFloat green = [[hex substringWithRange:NSMakeRange(2, 2)] _hexValue] / 255.0f;CGFloat blue = [[hex substringWithRange:NSMakeRange(4, 2)] _hexValue] / 255.0f;CGFloat alpha = [[hex substringWithRange:NSMakeRange(6, 2)] _hexValue] / 255.0f;return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.