String+Exten.swift

//
// String+Exten.swift
// swiftTest
//
// Created by napiao on 15/11/27.
// Copyright © 2015年 JINMARONG. All rights reserved.
// import Foundation
import CoreLocation extension String {
/// 将字符串转换成经纬度
func stringToCLLocationCoordinate2D(separator: String) -> CLLocationCoordinate2D? {
let arr = self.componentsSeparatedByString(separator)
if arr.count != 2 {
return nil
} let latitude: Double = NSString(string: arr[1]).doubleValue
let longitude: Double = NSString(string: arr[0]).doubleValue return CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
} }

UIColor+Exten.swift

//
// ColorHex.swift
// swiftTest
//
// Created by napiao on 15/11/26.
// Copyright © 2015年 JINMARONG. All rights reserved.
// import Foundation extension UIColor { public class func colorWithHexString (hex:String) -> UIColor {
var cString:String
= hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString if (cString.hasPrefix("#")){
cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))
} if (cString.characters.count != 6) {
return UIColor.grayColor()
} var rString = cString.substringToIndex(cString.startIndex.advancedBy(2)) var gString = cString.substringFromIndex(cString.startIndex.advancedBy(2)).substringToIndex(cString.startIndex.advancedBy(3)) var bString = cString.substringFromIndex(cString.startIndex.advancedBy(4)).substringToIndex(cString.startIndex.advancedBy(2)) var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0; NSScanner.init(string: rString).scanHexInt(&r) NSScanner.init(string: gString).scanHexInt(&g) NSScanner.init(string: bString).scanHexInt(&b) return UIColor(red:CGFloat(r)/CGFloat(255.0), green:CGFloat(g)/CGFloat(255.0), blue:CGFloat(b)/CGFloat(255.0), alpha:CGFloat(1)) } class func colorWith(red: Int, green: Int, blue: Int, alpha: CGFloat) -> UIColor {
let color = UIColor(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alpha)
return color
} }

UIImage+Exten.swift

//
// UIImage+Name.swift
// swiftTest
//
// Created by napiao on 15/11/27.
// Copyright © 2015年 JINMARONG. All rights reserved.
// import Foundation extension UIImage { static func addRoundedRectToPath(context:CGContextRef, rect:CGRect, ovalWidth:CGFloat,
ovalHeight:CGFloat)
{
let fw:CGFloat, fh:CGFloat; if (ovalWidth == 0 || ovalHeight == 0)
{
CGContextAddRect(context, rect)
return
} CGContextSaveGState(context)
CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect))
CGContextScaleCTM(context, ovalWidth, ovalHeight)
fw = CGRectGetWidth(rect) / ovalWidth
fh = CGRectGetHeight(rect) / ovalHeight CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right CGContextClosePath(context)
CGContextRestoreGState(context)
} // 圆角图片的生成 class func creatRoundedRectImage(image:UIImage, size:CGSize, radius:CGFloat)-> UIImage {
let w = Int(size.width)
let h = Int(size.height)
var img = image let colorSpace:CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()!;
let bitmapInfo = CGBitmapInfo(rawValue:CGImageAlphaInfo.PremultipliedFirst.rawValue)
var a:Void
let context:CGContextRef = CGBitmapContextCreate(&a, w, h, 8, 4 * w, colorSpace, bitmapInfo.rawValue)!;
let rect = CGRectMake(0, 0,CGFloat(w), CGFloat(h)); CGContextBeginPath(context)
self.addRoundedRectToPath(context, rect: rect, ovalWidth: radius, ovalHeight: radius)
CGContextClosePath(context)
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, CGFloat(w), CGFloat(h)), img.CGImage)
let imageMasked:CGImageRef = CGBitmapContextCreateImage(context)!
img = UIImage(CGImage:imageMasked)
return img;
} // 根据颜色生成图片
class func createImageWithColor(color:UIColor)->UIImage {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size);
let context:CGContextRef = UIGraphicsGetCurrentContext()!
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
let theImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return theImage;
} // 图片拉伸
class func resizedImageWithName(name:String!, left:Float, right:Float)->UIImage {
let image = UIImage(named: name)!
return (image.stretchableImageWithLeftCapWidth(Int(Float((image.size.width)) * left), topCapHeight:Int(Float((image.size.height)) * right)))
} // 图片中间拉伸
class func resizedImageWithName(name:String)->UIImage {
return self.resizedImageWithName(name, left: 0.5, right: 0.5)
} // 图片的缩放
func transformWidth(width:CGFloat,height:CGFloat)->UIImage {
let destW = width
let destH = height
let sourceW = width
let sourceH = height let imageRef:CGImageRef = self.CGImage!
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue | CGBitmapInfo.ByteOrder32Little.rawValue)
var tempa:Void
let bitmap:CGContextRef = CGBitmapContextCreate(&tempa,Int(destW), Int(destH), CGImageGetBitsPerComponent(imageRef),Int(4*destW),CGImageGetColorSpace(imageRef), bitmapInfo.rawValue)! CGContextDrawImage(bitmap, CGRectMake(0, 0, sourceW, sourceH), imageRef) let ref:CGImageRef = CGBitmapContextCreateImage(bitmap)!
let resultImage:UIImage = UIImage(CGImage: ref)
return resultImage;
} /// 按尺寸裁剪图片大小
class func imageClipToNewImage(image: UIImage, newSize: CGSize) -> UIImage {
UIGraphicsBeginImageContext(newSize)
image.drawInRect(CGRect(origin: CGPointZero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
} /// 将传入的图片裁剪成带边缘的原型图片
class func imageWithClipImage(image: UIImage, borderWidth: CGFloat, borderColor: UIColor) -> UIImage {
let imageWH = image.size.width
// let border = borderWidth
let ovalWH = imageWH + 2 * borderWidth UIGraphicsBeginImageContextWithOptions(CGSizeMake(ovalWH, ovalWH), false, 0)
let path = UIBezierPath(ovalInRect: CGRectMake(0, 0, ovalWH, ovalWH))
borderColor.set()
path.fill() let clipPath = UIBezierPath(ovalInRect: CGRectMake(borderWidth, borderWidth, imageWH, imageWH))
clipPath.addClip()
image.drawAtPoint(CGPointMake(borderWidth, borderWidth)) let clipImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext() return clipImage
} /// 将传入的图片裁剪成圆形图片
func imageClipOvalImage() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)
let ctx = UIGraphicsGetCurrentContext()
let rect = CGRectMake(0, 0, self.size.width, self.size.height)
CGContextAddEllipseInRect(ctx, rect) CGContextClip(ctx)
self.drawInRect(rect) let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
} func imageByApplyingAlpha(alpha:CGFloat)-> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0) let ctx:CGContextRef = UIGraphicsGetCurrentContext()!
let area:CGRect = CGRectMake(0, 0, self.size.width, self.size.height); CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -area.size.height); CGContextSetBlendMode(ctx, CGBlendMode.Multiply); CGContextSetAlpha(ctx, alpha); CGContextDrawImage(ctx, area, self.CGImage); let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage
} // 图片的旋转
func imageRotatedByDegrees(degrees:CGFloat)-> UIImage {
let width = CGImageGetWidth(self.CGImage);
let height = CGImageGetHeight(self.CGImage); var rotatedSize = CGSize() rotatedSize.width = CGFloat(width);
rotatedSize.height = CGFloat(height); UIGraphicsBeginImageContext(rotatedSize);
let bitmap:CGContextRef = UIGraphicsGetCurrentContext()!
CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
CGContextRotateCTM(bitmap, degrees * CGFloat(M_PI) / 180);
CGContextRotateCTM(bitmap,CGFloat(M_PI));
CGContextScaleCTM(bitmap, -1.0, 1.0);
CGContextDrawImage(bitmap, CGRectMake(-rotatedSize.width/2, -rotatedSize.height/2, rotatedSize.width, rotatedSize.height), self.CGImage);
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage; } }

UserIDCard.swift

//
// UserIDCard.swift
// swiftTest
//
// Created by napiao on 15/11/25.
// Copyright © 2015年 JINMARONG. All rights reserved.
// 根据身份正获取信息 import Foundation class UserIDCard{ // 获取年
class func obtainYearWith(IDCard:String) ->String {
var newIDCard = IDCard
if self.validate18PaperId(IDCard) {
if IDCard.characters.count == 15 {
newIDCard = self .exchange15IDCardTo18IDCard(IDCard)
}
return self .getStringWithRange(newIDCard, value1: 6, value2: 4)
}
return ""
} //获取月
class func obtainMonthWith(IDCard:String) ->String {
var newIDCard = IDCard
if self.validate18PaperId(IDCard) {
if IDCard.characters.count == 15 {
newIDCard = self .exchange15IDCardTo18IDCard(IDCard)
}
return self .getStringWithRange(newIDCard, value1: 10, value2: 2)
}
return ""
} // 获取日
class func obtainDayWith(IDCard:String) ->String {
var newIDCard = IDCard
if self.validate18PaperId(IDCard) {
if IDCard.characters.count == 15 {
newIDCard = self .exchange15IDCardTo18IDCard(IDCard)
}
return self.getStringWithRange(newIDCard, value1: 12, value2: 2)
}
return ""
} //获取生日
class func obtainBirthdayWith(IDCard:String)->String {
var newIDCard = IDCard
if self.validate18PaperId(IDCard) {
if IDCard.characters.count == 15 {
newIDCard = self .exchange15IDCardTo18IDCard(IDCard)
}
return self.getStringWithRange(newIDCard, value1: 6, value2: 4)+"-"+self.getStringWithRange(newIDCard, value1: 10, value2: 2)+"-"+self.getStringWithRange(newIDCard, value1: 12, value2: 2)
}
return ""
} //获取年龄
class func obtainAgeWith(IDCard:String)->String {
let IDCardYear: Int = Int(self.obtainYearWith(IDCard))!
let IDCardMonth:Int = Int(self.obtainMonthWith(IDCard))!
let IDCardDay:Int = Int(self.obtainDayWith(IDCard))! var iAge = 0 let now = NSDate() let cal = NSCalendar.currentCalendar() let unitFlags:NSCalendarUnit = [NSCalendarUnit.Year,NSCalendarUnit.Month,NSCalendarUnit.Day, NSCalendarUnit.Hour,NSCalendarUnit.Minute , NSCalendarUnit.Second] let dateComponents:NSDateComponents = cal.components(unitFlags, fromDate: now)
let y = dateComponents.year
let m = dateComponents.month
let d = dateComponents.day if let IDyear:Int = IDCardYear, let IDMonth:Int = IDCardMonth, let IDDay:Int = IDCardDay {
if y > IDyear {
iAge += y - IDyear - 1 if m > IDMonth {
++iAge
} else if m == IDMonth{
if d >= IDDay {
++iAge
}
}
}
}
return String(iAge)
} // 获取性别
class func obtainSexWith(IDCard:String)->String {
var newIDCard = IDCard
if self.validate18PaperId(IDCard) {
if IDCard.characters.count == 15 {
newIDCard = self.exchange15IDCardTo18IDCard(IDCard)
}
let a = self.getStringWithRange(newIDCard, value1: 14, value2: 3) if a == "1" {
return "男"
} else {
return "女"
}
}
return ""
} //15位身份证转为18位身份证
private class func exchange15IDCardTo18IDCard(IDCard:String)->String {
var carid:String = IDCard // 加权因子
let R:[Int] = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
// 校验码
let sChecker:[String] = ["1","0", "X" , "9", "8", "7", "6", "5", "4", "3","2" ] var mString:String = IDCard if IDCard.characters.count == 15 {
mString.insert(Character.init("1"), atIndex: mString.startIndex.advancedBy(6))
mString.insert(Character.init("9"), atIndex: mString.startIndex.advancedBy(7)) var p = 0 let pid = (mString as NSString).UTF8String for i in 0...16 {
p += (pid[i]-48)*R[i]
} let o:Int = p%11 let string_content = String(format: "%@", sChecker[o]) mString.insert(Character.init(string_content), atIndex: mString.endIndex.advancedBy(0)) carid = mString
}
return carid;
} // 验证身份证是否合法
private class func validate18PaperId(input:String) ->Bool{
if (input.characters.count != 15)&&(input.characters.count != 18) {
return false
} let carid:String = input var lSumQT = 0
// 加权因子
let R:[Int] = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
// 校验码
let sChecker:[String] = ["1","0", "X" , "9", "8", "7", "6", "5", "4", "3","2" ] var mString:String = input if input.characters.count == 15 {
mString.insert(Character.init("1"), atIndex: mString.startIndex.advancedBy(6))
mString.insert(Character.init("9"), atIndex: mString.startIndex.advancedBy(7)) var p = 0 let pid = (mString as NSString).UTF8String for i in 0...16 {
p += (pid[i]-48)*R[i]
} let o:Int = p%11 let string_content = String(format: "%@", sChecker[o]) mString.insert(Character.init(string_content), atIndex: mString.endIndex.advancedBy(0))
} let sProvince = carid.substringToIndex(carid.startIndex.advancedBy(2)) if !self.areaCode(sProvince) {
return false
} // 判断年月日是否有效
// 年
let strYear = (self.getStringWithRange(carid, value1: 6, value2: 4) as NSString).intValue
// 月
let strMonth = (self.getStringWithRange(carid, value1: 10, value2: 2) as NSString).intValue
// 日
let strDay = (self.getStringWithRange(carid, value1: 12, value2: 2) as NSString).intValue let localZone:NSTimeZone = NSTimeZone.localTimeZone() let dateFormatter = NSDateFormatter() dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle dateFormatter.timeZone = localZone dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" print(String(format: "%d-%d-%d", strYear,strMonth,strDay)) let data = dateFormatter.dateFromString(String(format: "%d-%d-%d 12:01:01", strYear,strMonth,strDay)) if data == nil {
return false
} let PaperId:UnsafePointer<CChar> = (carid as NSString).UTF8String print(PaperId) if carid.characters.count != 18 {
return false;
}
for i in 0..<18 {
if ((isdigit(Int32(PaperId[i]))).distanceTo(1) != 0 && (!("X".characterAtIndex(0) == UInt16(PaperId[i]) || UnicodeScalar("x").value == UInt32(PaperId[i])) && 17 == i))
{
return false;
}
} for i in 0...16 {
lSumQT += (PaperId[i] - 48) * R[i]
} if (sChecker[lSumQT%11] as NSString).characterAtIndex(0) != UInt16(PaperId[17]) {
return false
}
return true
} // 私有方法 字符串的范围取值
private class func getStringWithRange(str:String,value1:Int,value2:Int)->String{
return (str as NSString).substringWithRange(NSMakeRange(value1, value2))
} // 私有方法 判断是否符合地理编码
private class func areaCode(code:String)->Bool {
var dict = [String:String]()
dict["11"] = "北京"
dict["12"] = "天津"
dict["13"] = "河北"
dict["14"] = "山西"
dict["15"] = "内蒙古"
dict["21"] = "辽宁"
dict["22"] = "吉林"
dict["23"] = "黑龙江"
dict["31"] = "上海"
dict["32"] = "江苏"
dict["33"] = "浙江"
dict["34"] = "安徽"
dict["35"] = "福建"
dict["36"] = "江西"
dict["37"] = "山东"
dict["41"] = "河南"
dict["42"] = "湖北"
dict["43"] = "湖南"
dict["44"] = "广东"
dict["45"] = "广西"
dict["46"] = "海南"
dict["50"] = "重庆"
dict["51"] = "四川"
dict["52"] = "贵州"
dict["53"] = "云南"
dict["54"] = "西藏"
dict["61"] = "陕西"
dict["62"] = "甘肃"
dict["63"] = "青海"
dict["64"] = "宁夏"
dict["65"] = "新疆"
dict["71"] = "台湾"
dict["81"] = "香港"
dict["82"] = "澳门"
dict["91"] = "国外"
if dict[code] == nil {
return false
}
return true
} }

ValidateTool.swift

//
// ValidateTool.swift
// swiftTest
//
// Created by napiao on 15/11/23.
// Copyright © 2015年 JINMARONG. All rights reserved.
// 条件判断 import Foundation class ValidateTool{
// 判读是否纯数字
class func validateNumber(input:String)->Bool {
let pattern:String = "[0-9]+"
return validateFirstMatch(pattern, input: input)
} // 验证是否为非零正整数
class func validatePositiveNumber(input:String)->Bool {
let pattern:String = "^\\+?[1-9][0-9]*$"
return validateFirstMatch(pattern, input: input)
} //验证是否为邮箱
class func validateEmais(input:String)->Bool {
// 两种正则表达
// let pattern:String = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
let pattern:String = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"
return validateFirstMatch(pattern, input: input)
} // 验证手机号码
class func validateMobile(input:String)->Bool {
let pattern:String = "^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$"
return validateFirstMatch(pattern, input: input)
} // 验证固话
class func validateFixedLine(input:String)->Bool {
let pattern:String = "^(0[0-9]{2,3})-([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$"
return validateFirstMatch(pattern, input: input)
} // 验证URL
class func validateUrl(input:String)->Bool {
let pattern:String = "\\bhttps?://[a-zA-Z0-9\\-.]+(?::(\\d+))?(?:(?:/[a-zA-Z0-9\\-._?,'+\\&%$=~*!():@\\\\]*)+)?"
return validateNumberMatch(pattern, input: input)
} // 验证身份证是否合法
class func validate18PaperId(input:String) ->Bool{
if (input.characters.count != 15)&&(input.characters.count != 18) {
return false
} let carid:String = input var lSumQT = 0
// 加权因子
let R:[Int] = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
// 校验码
let sChecker:[String] = ["1","0", "X" , "9", "8", "7", "6", "5", "4", "3","2" ] var mString:String = input if input.characters.count == 15 {
mString.insert(Character.init("1"), atIndex: mString.startIndex.advancedBy(6))
mString.insert(Character.init("9"), atIndex: mString.startIndex.advancedBy(7)) var p = 0 let pid = (mString as NSString).UTF8String for i in 0...16 {
p += (pid[i]-48)*R[i]
} let o:Int = p%11 let string_content = String(format: "%@", sChecker[o]) mString.insert(Character.init(string_content), atIndex: mString.endIndex.advancedBy(0))
} let sProvince = carid.substringToIndex(carid.startIndex.advancedBy(2)) if !self.areaCode(sProvince) {
return false
} // 判断年月日是否有效
// 年
let strYear = (self.getStringWithRange(carid, value1: 6, value2: 4) as NSString).intValue
// 月
let strMonth = (self.getStringWithRange(carid, value1: 10, value2: 2) as NSString).intValue
// 日
let strDay = (self.getStringWithRange(carid, value1: 12, value2: 2) as NSString).intValue let localZone:NSTimeZone = NSTimeZone.localTimeZone() let dateFormatter = NSDateFormatter() dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle dateFormatter.timeZone = localZone dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" print(String(format: "%d-%d-%d", strYear,strMonth,strDay)) let data = dateFormatter.dateFromString(String(format: "%d-%d-%d 12:01:01", strYear,strMonth,strDay)) if data == nil {
return false
} let PaperId:UnsafePointer<CChar> = (carid as NSString).UTF8String print(PaperId) if carid.characters.count != 18 {
return false;
}
for i in 0..<18 {
if ((isdigit(Int32(PaperId[i]))).distanceTo(1) != 0 && (!("X".characterAtIndex(0) == UInt16(PaperId[i]) || UnicodeScalar("x").value == UInt32(PaperId[i])) && 17 == i))
{
return false;
}
} for i in 0...16 {
lSumQT += (PaperId[i] - 48) * R[i]
} if (sChecker[lSumQT%11] as NSString).characterAtIndex(0) != UInt16(PaperId[17]) {
return false
}
return true
} // 私有方法 字符串的范围取值
private class func getStringWithRange(str:String,value1:Int,value2:Int)->String{
return (str as NSString).substringWithRange(NSMakeRange(value1, value2))
} // 私有方法 判断是否符合地理编码
private class func areaCode(code:String)->Bool {
var dict = [String:String]()
dict["11"] = "北京"
dict["12"] = "天津"
dict["13"] = "河北"
dict["14"] = "山西"
dict["15"] = "内蒙古"
dict["21"] = "辽宁"
dict["22"] = "吉林"
dict["23"] = "黑龙江"
dict["31"] = "上海"
dict["32"] = "江苏"
dict["33"] = "浙江"
dict["34"] = "安徽"
dict["35"] = "福建"
dict["36"] = "江西"
dict["37"] = "山东"
dict["41"] = "河南"
dict["42"] = "湖北"
dict["43"] = "湖南"
dict["44"] = "广东"
dict["45"] = "广西"
dict["46"] = "海南"
dict["50"] = "重庆"
dict["51"] = "四川"
dict["52"] = "贵州"
dict["53"] = "云南"
dict["54"] = "西藏"
dict["61"] = "陕西"
dict["62"] = "甘肃"
dict["63"] = "青海"
dict["64"] = "宁夏"
dict["65"] = "新疆"
dict["71"] = "台湾"
dict["81"] = "香港"
dict["82"] = "澳门"
dict["91"] = "国外"
if dict[code] == nil {
return false
}
return true
} // 私有类方法 根据输入正则规则与被判断数据判断是否正确
private class func validateFirstMatch(pattern:String, input:String)->Bool {
var regex:NSRegularExpression?
do {
regex = try NSRegularExpression(pattern: pattern as String, options: .CaseInsensitive) let resultCheck: NSTextCheckingResult! = regex?.firstMatchInString(input, options: NSMatchingOptions(), range: NSMakeRange(0, input.characters.count))
if resultCheck != nil {
return true
}
return false
} catch {
return false
}
} private class func validateNumberMatch(pattern:String, input:String)->Bool {
var regex:NSRegularExpression?
do {
regex = try NSRegularExpression(pattern: pattern as String, options: .CaseInsensitive) let resultCheck:NSInteger = (regex?.numberOfMatchesInString(input, options: NSMatchingOptions(), range: NSMakeRange(0, input.characters.count)))!
if resultCheck > 0 {
return true
}
return false } catch {
return false
}
}
}

VersionTools.swift

//
// YWBVersionTools.swift
// swiftTest
//
// Created by napiao on 15/11/26.
// Copyright © 2015年 JINMARONG. All rights reserved.
// //private let VERSION_IOS_REVIEWS_URL_FORMAT = "itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=990869716" private let VERSION_IOS7_REVIEWS_URL_FORMAT = "itms-apps://itunes.apple.com/app/id990869716" private let VERSION_IOS8_REVIEWS_URL_FORMAT = "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=990869716&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8" import Foundation // 单例
class VersionTools {
private static let shareInstance = VersionTools()
class var shareManager : VersionTools {
return shareInstance
} func apenAppReviews() {
var url:NSURL if UIDevice.currentDevice().systemVersion.compare("7.0") != NSComparisonResult.OrderedDescending{
url = NSURL(string: VERSION_IOS7_REVIEWS_URL_FORMAT)!
} else {
url = NSURL(string: VERSION_IOS8_REVIEWS_URL_FORMAT)!
} UIApplication.sharedApplication().openURL(url)
} }

swiftTools的更多相关文章

  1. UIPresentationController - iOS自定义模态弹出框

    参考: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/Definin ...

  2. iOS绘制坐标图,折线图-Swift

    坐标图,经常会在各种各样的App中使用,最常用的一种坐标图就是折线图,根据给定的点绘制出对应的坐标图是最基本的需求.由于本人的项目需要使用折线图,第一反应就是搜索已经存在的解决方案,因为这种需求应该很 ...

随机推荐

  1. Atitit.软件guibuttonand面板---os区-----linux windows搜索文件 目录

    Atitit.软件guibuttonand面板---os区-----搜索文件 1. Find 1 2. 寻找文件夹 1 3. 2. Locate// everything 1 4. 3. Wherei ...

  2. [Hapi.js] Request Validation with Joi

    hapi supports request validation out of the box using the joi module. Request path parameters, paylo ...

  3. Android PackageManager基础知识

    一.PackageManagerService启动过程 SystemServer首先启动,创建一个ServerThread线程来启动所有Android核心服务,其中PackageManagerServ ...

  4. nginx搭建flv、mp4流媒体服务

    1.安装pcre-8.33.tar.bz2 #tar -xvf 1.pcre-8.33.tar.bz2 #cd pcre-8.33/ #./configure #make && mak ...

  5. 常用的方法,读取XML节点并赋值给List集合

    一.前言 很多时候也可以直接在XML文件中配置好节点,在程序需要用到的时候,修改XML文件并不需要重新编译,这里是在极光推送中拿出来的一部分代码.代码简单,大家直接看例子吧. 二.实现过程 1.新创建 ...

  6. (原)调用jpeglib对图像进行压缩

    网址:http://www.cnblogs.com/darkknightzh/p/4973828.html.未经允许,严禁转载. 参考网站: http://dev.w3.org/Amaya/libjp ...

  7. GitHub项目协作基本步骤

    1.查找某个项目,然后Fork 2.打开GitHub For Windows,发现刚才Fork的项目 3.对着项目点击Clone,将之复制至本地 4.使用Eclipse等进行开发,如新增一个文件 5. ...

  8. ElasticSearch入门知识扫盲

    ElasticSearch 入门介绍 tags: 第三方 lucene [toc] 1. what Elastic Search(ES)是什么 全文检索和lucene 全文检索 优点:高效,准确,分词 ...

  9. j2ee中request.getQueryString()

    比如发送http://localhost/test.do?a=b&c=d&e=f得到的是a=b&c=d&e=f

  10. 微信订阅号开发之token验证后,自动回复消息功能做好,发送消息没有返回

    相信很多人会跟我一样,token验证之后,发送消息给订阅号,没有消息返回. 以下,说一下我辛苦调试得到的解决办法: 首先,token验证: 自己写的token一直验证失败,找了好久,没有发现bug.实 ...