swift 遍历data - CSDN
  • 遍历NSData的方法

    2015-04-03 11:55:58
    // 第一种方法 NSMutableString* resultAsHexBytes = [NSMutableString string]; NSString *string = @"abc"; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];... [data enumerateByteRang
        // 第一种方法
        NSMutableString* resultAsHexBytes = [NSMutableString string];
        NSString *string = @"abc";
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        [data enumerateByteRangesUsingBlock:^(const void *bytes,
                                              NSRange byteRange,
                                              BOOL *stop) {
    
            // To print raw byte values as hex
            for (NSUInteger i = 0; i < byteRange.length; ++i) {
                [resultAsHexBytes appendFormat:@"%02x", ((uint8_t*)bytes)[i]];
            }
            NSLog(@"resultAsHexBytes:%@", resultAsHexBytes);
        }];
    
        // 第二种方法
        NSMutableString *result = [NSMutableString string];
        const char *bytes = [data bytes];
        for (int i = 0; i < [data length]; i++)
        {
            [result appendFormat:@"%02hhx", (unsigned char)bytes[i]];
        }
        NSLog(@"result:%@", result);

    输出结果分别是:
    result:616263
    resultAsHexBytes:616263

    值得注意的是,第一种方法只适用于iOS7之后的系统。

    展开全文
  • [Swift]遍历字符串

    2019-07-30 09:37:25
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:...

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9798159.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Swift中无法再使用传统形式的for循环。

    1 //传统for循环形式不适用于Swift
    2 for(单次表达式;条件表达式;末尾循环体){中间循环体;}

    字符串遍历方法1:使用该indices属性可以访问字符串中各个字符的所有索引。

    1 let str = "Strengthen!"
    2 for index in str.indices {
    3     print("\(str[index]) ", terminator: "")
    4 }
    5 // Prints "S t r e n g t h e n ! "

    字符串遍历方法2:每个String值都有一个关联的索引类型,String.Index它对应Character于字符串中每个值的位置。要访问远离给定索引的索引,可以使用该index(_:offsetBy:)方法而不是多次调用其中一种方法。您可以使用下标语法来访问Character特定String索引。

     1 extension String {
     2     //subscript函数可以检索数组中的值
     3     //按照索引方式读取字符
     4     subscript (_ i: Int) -> Character {
     5         //读取字符
     6         get {return self[index(startIndex, offsetBy: i)]}
     7     }
     8 }
     9 
    10 //方式1
    11 let str = "Strengthen!"
    12 for num in 0..<str.count
    13 {
    14     let char:Character = str[str.index(str.startIndex,offsetBy: num)]
    15      print("\(char) ", terminator: "")
    16 }
    17 //Prints "S t r e n g t h e n ! "
    18 
    19 //方式2
    20 for num in 0..<str.count
    21 {
    22     let char:Character = str[num]
    23      print("\(char) ", terminator: "")
    24 }
    25 //Prints "S t r e n g t h e n ! "

    字符串遍历方法3:遍历字符串的每一个字符

    1 let str = "Strengthen!"
    2 for char in str.characters {
    3     print("\(char) ", terminator: "")
    4 }
    5 //Prints "S t r e n g t h e n ! "

    字符串遍历方法4:遍历字符串的每一个字符对应ASCII的整数值

    1 let str = "Strengthen"
    2 var strUnicodeScalars = Array(str.utf8)
    3 print(strUnicodeScalars)
    4 //Prints [83, 116, 114, 101, 110, 103, 116, 104, 101, 110]
    5 for charNum in strUnicodeScalars 
    6 {
    7     print("\(charNum) ", terminator: "")
    8 }
    9 //Prints "83 116 114 101 110 103 116 104 101 110"

    倒序遍历字符串方法1:reversed()

    1 let str = "Strengthen!"
    2 for char in str.reversed() {
    3     print("\(char) ", terminator: "")
    4 }
    5 //Prints ! n e h t g n e r t S 

    倒序遍历字符串方法2stride函数 -返回一个任意可变步长类型值的序列。可变步长类型是可以设置偏移量的一维标量。

     1 let str = "Strengthen!"
     2 //from,to,by 最后一个值是 >(或<) to的值
     3 for num in stride(from: str.count-1,to: 0,by: -1)
     4 {
     5     let char:Character = str[str.index(str.startIndex,offsetBy: num)]
     6      print("\(char) ", terminator: "")
     7 }
     8 //Prints "! n e h t g n e r t"
     9 
    10 //from,through,by 最后一个值是 >=(或<=) through的值
    11 for num in stride(from: str.count-1,through: 0,by: -1)
    12 {
    13     let char:Character = str[str.index(str.startIndex,offsetBy: num)]
    14      print("\(char) ", terminator: "")
    15 }
    16 //Prints "! n e h t g n e r t S "

    字符串转字符数组:

    1 let str = "I am Strengthen"
    2 let array = str.components(separatedBy:" ")
    3 print("\(array) ", terminator: "")
    4 //["I", "am", "Strengthen"] 

    字符数组转字符串:

     1 /*字符数组转字符串*/
     2 let arrayStr = ["s","t","r","e","n","g","t","h","e","n","!"]
     3 
     4 //方式1
     5 let str1 = arrayStr.joined(separator: "")
     6 let str2 = arrayStr.joined(separator: "-")
     7 print("\(str1) ", terminator: "")
     8 print("\(str2) ", terminator: "")
     9 //strengthen! 
    10 //s-t-r-e-n-g-t-h-e-n-! 
    11 
    12 //方式2:注意与方式1比较,方式2只在首位添加"-"
    13 let str3 = arrayStr.reduce("", {$0 + $1})
    14 let str4 = arrayStr.reduce("-", {$0 + $1})
    15 print("\(str3) ", terminator: "")
    16 print("\(str4) ", terminator: "")
    17 //strengthen!
    18 //-strengthen! 
    19 
    20 /*整数数组转字符串*/
    21 let arrayInt = [0,1,2,3,4,5,6,7,8,9]
    22 let dataInt = arrayInt.map(String.init)
    23 let strInt = dataInt.joined(separator: "-")
    24 print("\(strInt) ", terminator: "")
    25 //0-1-2-3-4-5-6-7-8-9

    最强字符串解析,你想知道,我都有!!!

    请点击下方链接继续深入学习!!!不可浅尝辄止!!!

    [Swift]字符串根据索引获取指定字符,依据ASCII编码,实现字符和整数的快速转换

    [Swift]字符串(String类、NSString类)常用操作

    [Swift]扩展String类:extension String

    [Swift]ASCII值的获取和转换:extension Character类和extension Int

    [Swift]字符串大小写转换,同时实现本地化或设置语言环境

    转载于:https://www.cnblogs.com/strengthen/p/9798159.html

    展开全文
  • 正在学习swift的Core Data,做个笔记,顺便分享源码 这个实例是一个很简单的Table,通过右上角的Add按钮可以添加新的用户名。数据存储在CoreData中,这样,才不会丢失。 通过这个例子可以学会: 使用Xcode的model...

    正在学习swift的Core Data,做个笔记,顺便分享源码

    转载请注明出处:http://blog.csdn.net/yamingwu/article/details/42215541

    这个实例是一个很简单的Table,通过右上角的Add按钮可以添加新的用户名。数据存储在CoreData中,这样,才不会丢失。

    通过这个例子可以学会:

    1. 使用Xcode的model编辑器创建数据对象的model data。

    2. 添加新的记录到CoreData中

    3. 从CoreData中获取记录集合

    4. 显示记录到table view中


    这个例子十分简单,还有很多可以改进的地方,比如,每次要操作managed class都需要访问AppDelegate,读取和存储数据使用的是KVC(key-value coding )方式而不是类似于类操作的方式。

    程序截图和源码地址:

    https://github.com/dnawym/StudySwift/tree/master/CoreData/HitList

    1. 在创建工程时选择使用core data
    2. 编辑.xcdatamodeld文件,添加entity person,添加attribute name,类型为String
    3. 初始化,读取和修改core data数据
    4.     @IBOutlet weak var tableView: UITableView!
          
          var people = [NSManagedObject]()
    5. 从Core Data数据库中读取数据

    6.     override func viewWillAppear(animated: Bool) {
              let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
              
              let managedContext = appDelegate.managedObjectContext!
              
              let fetchRequest = NSFetchRequest(entityName: "Person")
              
              var error: NSError?
              
              let fetchResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?
              
              if let results = fetchResults {
                  people = results
              } else {
                  println("Could not fetch \(error), \(error!.userInfo)")
              }
          }
    7. 读取数据填入table view中

    8.     // MARK: UITableViewDataSource
          func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
              return people.count
          }
          
          func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
              let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
              
              let person = people[indexPath.row]
              cell.textLabel?.text = person.valueForKey("name") as String?
              
              return cell
          }
    9. 添加用户名并保存到Core Data数据库中

    10.     // MARK: private
          func saveName(name: String) {
              let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
              let managedContext = appDelegate.managedObjectContext!
              
              let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext)
              
              let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
              
              person.setValue(name, forKey: "name")
              
              var error:NSError?
              if !managedContext.save(&error) {
                  println("Could not save \(error), \(error?.userInfo)")
              }
              
              people.append(person)
          }
          
          @IBAction func addName(sender: AnyObject) {
              
              var alert = UIAlertController(title: "New name", message: "Add a new name", preferredStyle: UIAlertControllerStyle.Alert)
              
              let saveAction = UIAlertAction(title: "Save", style: .Default, handler: {
                  (action: UIAlertAction!) -> Void in
                  let textField = alert.textFields![0] as UITextField
                  self.saveName(textField.text)
                  self.tableView.reloadData()
              })
              
              let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: {
                  (action: UIAlertAction!) -> Void in
              })
              
              alert.addTextFieldWithConfigurationHandler({
                  (textField: UITextField!) -> Void in
              })
              
              alert.addAction(saveAction)
              alert.addAction(cancelAction)
              
              presentViewController(alert, animated: true, completion: nil)
          }



    展开全文
  • Swift之NSData的使用

    2017-03-03 10:34:06
    swift NSData

    SwiftDate是Github上开源的,使用Swift语言编写的NSDate封装库,可以很方便的在Swift中处理日期,比如日期创建,比较,输出等。

    特性

    http://www.cnblogs.com/QianChia/p/5777454.html
    • 支持数学运算符进行日期计算(比如myDate + 2.week + 1.hour)
    • 支持比较运算符(比如<,>,==,<=,>=)
    • 快速获取/修改日期各部分内容(比如获取或修改日期中的月份)
    • 提供通用格式化输出或自定义的格式化输出
    • 提供一系列.toString方法
    • 提供简便的方法获取yesterday,tomorrow等

    依赖

    • iOS 8.0+ / Mac OS X 10.10+
    • Xcode 6.3+
    • Swift 1.2

    使用

    CocoaPods安装SwiftDate

    我们需要通过CocoaPods安装SwitDate,如果你还没有安装cocoapods,可以通过如下命令安装

    $ gem install cocoapods

    然后在你的Xcode项目中的Podfile文件中,添加如下内容:

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '8.0'
    use_frameworks!
    
    pod 'SwiftDate'

    最后,执行如下命令安装

    $ pod install

    创建日期

    • 通过解析字符串创建

    let date_custom = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD"))

    1、NSDate 的创建

        // 当前时间值,GMT 时间
        let date1:NSDate = NSDate()
        
        // 当前时间加 n 秒后的值
        let date2:NSDate = NSDate(timeIntervalSinceNow: 10)
        
        // 某个时间增加 n 秒后的值
        let date3:NSDate = NSDate(timeInterval: 10, sinceDate: date2)
        
        // 从 1970-01-01 00:00:00 (GMT) 增加 n 秒后的值
        let date4:NSDate = NSDate(timeIntervalSince1970: 3600)
        
        // 从 2001-01-01 00:00:00 (GMT) 增加 n 秒后的值
        let date5:NSDate = NSDate(timeIntervalSinceReferenceDate: 10)
        
        // 未来某一个随机时间
        let date6:NSDate = NSDate.distantFuture()
        
        // 过去某一个随机时间
        let date7:NSDate = NSDate.distantPast()
        
        // 某个时间增加 n 秒后的值
        let date8:NSDate = date5.dateByAddingTimeInterval(20)

    • 通过指定日期各部分创建
    let date_from_components = NSDate.date(refDate: nil, year: 2014, month: 01, day: nil, hour: nil, minute: nil, second: nil, tz: "
    UTC")

    2、NSDate 时间间隔的计算

        let date1 = NSDate()
        let date2 = date1.dateByAddingTimeInterval(20)
            
        // 实例保存的时间 与 当前时间 的时间间隔,单位 秒
        let interval1:NSTimeInterval = date2.timeIntervalSinceNow
        
        // 实例保存的时间 与 指定时间 的时间间隔,单位 秒
        let interval2:NSTimeInterval = date2.timeIntervalSinceDate(date1)
        
        // 实例保存的时间 与 1970-01-01 00:00:00 (GMT) 的时间间隔,单位 秒
        let interval3:NSTimeInterval = date1.timeIntervalSince1970
        
        // 实例保存的时间 与 2001-01-01 00:00:00 (GMT) 的时间间隔,单位 秒
        let interval4:NSTimeInterval = date1.timeIntervalSinceReferenceDate
        
        // 当前时间 与 2001-01-01 00:00:00 (GMT) 的时间间隔,单位 秒
        let interval5:NSTimeInterval = NSDate.timeIntervalSinceReferenceDate()

    3、NSDate 时间的比较

        let date1 = NSDate()
        let date2 = date1.dateByAddingTimeInterval(20)
            
        // 判断两个时间是否相等
        let bl:Bool = date1.isEqualToDate(date2)
        
        // 比较两个时间大小
        let result:NSComparisonResult = date1.compare(date2)
        
        // 比较两个时间,返回 较早的时间
        let date3 = date1.earlierDate(date2)
        
        // 比较两个时间,返回 较晚的时间
        let date4 = date1.laterDate(date2)

    4、时区差值转换

        // 得到当前时间(世界标准时间 UTC/GMT)
        var date:NSDate = NSDate()
        
        // 设置系统时区为本地时区
        let zone:NSTimeZone = NSTimeZone.systemTimeZone()
        
        // 计算本地时区与 GMT 时区的时间差
        let second:Int = zone.secondsFromGMT
        
        // 在 GMT 时间基础上追加时间差值,得到本地时间
        date = date.dateByAddingTimeInterval(NSTimeInterval(second))

    5、NSDateComponents 的创建

        // 由手动设置创建
        
        let compt1:NSDateComponents = NSDateComponents()
            
        // 日历
        compt1.calendar = NSCalendar.currentCalendar()
    
        // 时区
        compt1.timeZone = NSTimeZone.systemTimeZone()
            
        compt1.era = 1                   // 纪元
        compt1.year = 2016               // 年
        compt1.month = 3                 // 月
        compt1.day = 1                   // 日
        compt1.hour = 10                 // 时
        compt1.minute = 12               // 分
        compt1.second = 55               // 秒
        compt1.nanosecond = 280          // 微妙
        compt1.quarter = 0               // 刻钟
            
        compt1.weekday = 3               // 周几
        compt1.weekdayOrdinal = 1        // 指定日期为本月的第几个星期几
        compt1.weekOfMonth = 1           // 指定日期为本月的第几周
        compt1.weekOfYear = 10           // 指定日期为本年的第几周
        compt1.yearForWeekOfYear = 2016  //
    
        //  由已知 date 创建
        /*
            只有明确指定了 unitFlags,NSDateComponents 相应的那一部分才有值。在 Swift 2.2 中不能使用 “|” 连接两个 Unit 枚举值
        */
        
        let flag:NSCalendarUnit = [.Era, .Year, .Month, .Day, .Hour, .Minute, .Second, .Nanosecond, .Quarter, .Weekday, 
                                   .WeekdayOrdinal, .WeekOfMonth, .WeekOfYear, .WeekOfYear, .Calendar, .TimeZone]    
        
        let compt2:NSDateComponents = NSCalendar.currentCalendar().components(flag, fromDate: NSDate())

    6、NSDateComponents 时间间隔的计算

        let date1:NSDate = NSDate()
        let date2:NSDate = NSDate(timeInterval: 5*60*60+75, sinceDate: date1)
            
        let flag:NSCalendarUnit = [.Minute, .Second]
            
        // 参数 options 不能为 0 ,0 不是一个有效的值。对于没有选项,使用 NSCalendarOptions(rawValue: 0) 
        let compt:NSDateComponents = NSCalendar.currentCalendar().components(flag, 
                                                                    fromDate: date1, 
                                                                      toDate: date2, 
                                                                     options: NSCalendarOptions(rawValue: 0))

    7、NSDateComponents 与 NSDate 的相互转换

        let calendar:NSCalendar = NSCalendar.currentCalendar()
            
        // NSDate 转 NSDateComponents
        let compt:NSDateComponents = calendar.components([.Year, .Month], fromDate: NSDate())
            
        // NSDateComponents 转 NSDate
                
            // 转换时间时,使用默认的时区 GMT 时区
            var date:NSDate = calendar.dateFromComponents(compt)!
    
            // 得到本地时间,避免时区问题
            let timeInterval = NSTimeZone.systemTimeZone().secondsFromGMT
    
            date = date.dateByAddingTimeInterval(NSTimeInterval(timeInterval))

    8、NSDateComponents 与 NSDate 的计算

        let compt:NSDateComponents = NSDateComponents()
        compt.day = 25
        compt.hour = 11
        compt.minute = 12
            
        // NSDate 加上 NSDateComponents 表示的一段时间
        var date:NSDate = NSCalendar.currentCalendar().dateByAddingComponents(compt, 
                                                                       toDate: NSDate(), 
                                                                      options: NSCalendarOptions(rawValue: 0))!
            
        date = date.dateByAddingTimeInterval(NSTimeInterval(NSTimeZone.systemTimeZone().secondsFromGMT))

    9、NSDateFormatter 的时间格式化

    • 使用 NSDateFormatter 转换时间字符串时,默认的时区是系统时区,例如在中国一般都是北京时间(+8),如果直接转换会导致结果相差8小时,所以一般的做法是先指定时区为GMT标准时间再转换。
        /*
            G -- 纪元              一般会显示公元前(BC)和公元(AD)
            y -- 年                假如是2013年,那么 yyyy=2013,yy=13
            M -- 月                假如是3月,那么 M=3,MM=03,MMM=Mar,MMMM=March;
                                   假如是11月,那么M=11,MM=11,MMM=Nov,MMMM=November
            w -- 一年中的第几周     假如是1月8日,那么 w=2(这一年的第二个周)
            W -- 一个月中的第几周   与日历排列有关,假如是2013年4月21日,那么 W=4(这个月的第四个周)
            F -- 月份包含的周       与日历排列无关,和上面的 W 不一样,F 只是单纯以7天为一个单位来统计周,
                                   例如7号一定是第一个周,15号一定是第三个周,与日历排列无关。
            D -- 一年中的第几天     假如是1月20日,那么 D=20(这一年的第20天);假如是2月25日,那么 D=31+25=56(这一年的第56天)
            d -- 一个月中的第几天   假如是5号,那么 d=5,dd=05   假如是15号,那么 d=15,dd=15
            E -- 星期几            假如是星期五,那么 E=Fri,EEEE=Friday
            a -- 上午(AM)/下午(PM)
            H -- 24小时制          显示为0--23,假如是午夜00:40,那么 H=0:40,HH=00:40
            h -- 12小时制          显示为1--12,假如是午夜00:40,那么 h=12:40
            K -- 12小时制          显示为0--11,假如是午夜00:40,那么 K=0:40,KK=00:40
            k -- 24小时制          显示为1--24,假如是午夜00:40,那么 k=24:40
            m -- 分钟              假如是5分钟,那么 m=5,mm=05;假如是45分钟,那么 m=45,mm=45
            s -- 秒                假如是5秒钟,那么 s=5,ss=05;假如是45秒钟,那么 s=45,ss=45
            S -- 毫秒              一般用 SSS 来显示
            z -- 时区              表现形式为 GMT+08:00
            Z -- 时区              表现形式为 +0800
        */
            
        let formatter:NSDateFormatter = NSDateFormatter()
            
        // 设置时区,不设置时默认的时区是系统时区(GMT+8)
        formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
        
        // 设置日期格式,以字符串表示的日期形式的格式
        formatter.dateFormat = "G yyyy-MM-dd E D F w W a z HH:mm:ss.SSS"
        
        // 格式化日期,GMT 时间,NSDate 转 NSString
        let str:String = formatter.stringFromDate(NSDate())

    10、1437494603 (秒) 格式 转 YYYY-MM-dd HH:mm:ss 格式

        // 计算日期
        let date:NSDate = NSDate(timeIntervalSince1970: 1437494603)
        
        // 创建时间戳
        let formatter:NSDateFormatter = NSDateFormatter()
        
        // 设置日期格式,以字符串表示的日期形式的格式
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        
        // 转换成指定的格式
        let str:String = formatter.stringFromDate(date)

    11、NSDate 与 NSString 的相互转换

        let formatter:NSDateFormatter = NSDateFormatter()
            
        // 设置时区,不设置时默认的时区是系统时区(GMT+8)
        formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
        
        // 加入一些别的英文字符串时,需用单引号来引入
        formatter.dateFormat = "yyyy年MM月dd日 HH点mm分ss秒 'iOS Date Test'"
                        
        // NSString 转 NSDate
        let date:NSDate = formatter.dateFromString("2016年01月12日 1点8分50秒")!
            
        // NSDate 转 NSString
        let str:String = formatter.stringFromDate(date)


    • 通过String类的toDate方法创建
    let date = "2015-07-26".toDate(formatString: "YYYY-MM-DD")
    • 通过NSDate的静态方法创建
    let todayDate = NSDate.today()
    let yesterdayDate = NSDate.yesterday()
    let tomorrowDate = NSDate.tomorrow()

    获取日期中年月日等信息

    我们可以通过NSDate的以下属性获取

    .year
    .month
    .weekOfMonth
    .weekday
    .weekdayOrdinal
    .day
    .hour
    .minute
    .second
    .era
    .firstDayOfWeek // (first day of the week of passed date)
    .lastDayOfWeek // (last day of the week of passed date)
    .nearestHour // (nearest hour of the passed date)
    .isLeapYear() // true if date's represented year is leap
    .monthDays() // return the number of days in date's represented month

    修改日期

    var date = NSDate()
    date = date.set("hour",value: 12)!
    date = date.set("day",value: 1)!

    日期运算

    let date = NSDate()
    let tomorrow = date+1.day
    let two_months_ago = date-2.months

    时区转换

    let date = NSDate() //本地时区
    let date_as_utc = date.toUTC() //UTC 时间
    let date_as_beijing = date_as_utc.toTimezone("UTC+8") //北京时间

    日期比较

    我们可以通过数学运算符比较

    let date1 = NSDate.date(fromString: "2015-07-26", format: DateFormat.Custom("YYYY-MM-DD"))
    let date2 = NSDate.date(fromString: "2015-07-27", format: DateFormat.Custom("YYYY-MM-DD"))
    
    if date2 > date1 {
    
      // TODO something
    
    }

    还可以通过NSDate的以下一些方法来比较

    let isInRange : Bool = date1.isInTimeRange("11:00","15:00")
    .isToday()  // true if represented date is today
    .isTomorrow()
    .isYesterday()
    .isThisWeek() // true if represented date's week is the current week
    .isSameWeekOf(date: NSDate) // true if two dates share the same year's week
    .dateAtWeekStart() // return the date where current's date week starts
    .beginningOfDay() // return the same date of the sender with time set to 00:00:00
    .endOfDay() // return the same date of the sender with time set to 23:59:59
    .beginningOfMonth() // return the date which represent the first day of the sender date's month
    .endOfMonth() // return the date which represent the last day of the sender date's month
    .beginningOfYear() // return the date which represent the first day of the sender date's year
    .endOfYear() // return the date which represent the last day of the sender date's year
    .isWeekday() // true if current sender date is a week day
    .isWeekend() // true if current sender date is a weekend day (sat/sun)

    NSDate转换为字符串

    let string = date.toString(format: DateFormat.Custom("YYYY-MM-DD"))

    也可以在转换方法中指定NSDateFormatterStyle

    let string = date.toString(dateStyle: .ShortStyle timeStyle:.LongStyle relativeDate:true)

    还可以通过以下方法转换为特定的字符串

    .toISOString() //  DateFormat.ISO8601
    .toShortString() // short style, both time and date are printed
    .toMediumString() // medium style, both time and date are printed
    .toLongString() // full style, both time and date are printed
    .toShortDateString() // short style, print only date
    .toShortTimeString() // short style, print only time
    .toMediumDateString() // medium style, print only date
    .toMediumTimeString() // medium style, print only time
    .toLongDateString() // long style, print only date
    .toLongTimeString() // long style, print only time

    最后我们还可以输出相对时间的格式,比如输出"2 hours ago"

    var d = NSDate()-2.hour
    var abb = d.toRelativeString(abbreviated: true, maxUnits: 3)
    println("data: \(abb)")


    展开全文
  • Array是Swift中的数组数据类型,而NSArray是OC中的数组数据类型,两者有区别有联系。在Swift中有时候难免会使用到OC中的一些东西,今天我们就来Swift中使用NSArray和Array,并且进行转化。 (1)声明一个Array数组...
  • //// Person.swift// 011-加载百度//// Created by 庄壮勇 on 2018/1/9.// Copyright © 2018年 Personal. All rights reserved.//import UIKit1.创建Personl 类class Person: NSObject { var name: String? ...
  • 开始上手Swift,之前的OC是门弱语言,而Swift是强语言,在语法上有较大的不同之处。 // json文件 [ { "name": "json1", "title": "测试1", }, { "name": "json2", "title": "测试2", }, { ...
  • 这是Dictionary转Data 的方法 源码: func jsonToData(jsonDic:Dictionary<String, Any>) -> Data? { if (!JSONSerialization.isValidJSONObject(jsonDic)) { print("is not a valid json object") ....
  • import UIKit extension UIImage{    /**  获取图片中的像素颜色值    - parameter pos: 图片中的位置    - returns: 颜色值  */  func getPixelColor(pos:CGPoint)-&...(alpha: CGFloat, red: C...
  • 在前几天的一篇博客《iOS开发之使用Runtime给Model类赋值》中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来...
  • 应用沙盒结构分析 1、应用程序包:包含了所有的资源文件和可执行文件 2、Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录 ...3、tmp:保存应用运行时所需要的临时数据,使用...
  • 1。***********获取系统相册的照片和录像********* let assetArr: [PHAsset] = getAllAlbumAndPHAsset()//获取照片资源 //吧强求到图片资源转换成UIIMgae,在回掉方法中获取图片data数据,然后做...
  • 1,ALAssetsLibrary介绍 (1)通过创建ALAssetsLibrary的实例可以访问系统Photos里的图片与视频。这里图片不仅包括相机拍摄的照片,还包括从iTunes导入的和从其他设备里面导入的图片。 (2)从ALAssetsLibrary实例...
  • Swift-Realm数据库的使用详解 概述 Realm 是一个跨平台的移动数据库引擎,其性能要优于 Core Data 和 FMDB - 移动端数据库性能比较, 我们可以在 Android 端 realm-java,iOS端:Realm-Cocoa,同时支持 OC 和 ...
  • 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象。 2,虽然其底层也是由类似于SQL的技术来实现,但...
  • 目前提供的接口并非是传入的参数为时间段,而是传入的参数以天为单位,所以这时候就需要时间遍历查询,这时如何实现传入起始时间和结束时间,这时可以得到这段时间内遍历每天的时间表示: if(startDate != null &...
  • main.mxml &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;mx:Applicationname="TabBar_getChildAt_labelPlacement_test" ...v
  • 本篇博客我们就继续聊数据结构的相关东西,并且所涉及的相关Demo依然使用面向对象语言Swift来表示。本篇博客我们就来介绍树结构的一种:二叉树。在之前的博客中我们简单的聊了一点树的东西,树结构的特点是除头节点...
  • 二叉树的遍历

    2020-04-19 17:42:38
    二叉树的遍历方式有 先序遍历(preorder traeversal)、中序遍历(inorder traversal)、后序遍历(postorder traversal) 三种,假设结点为 N,左子结点为 L,右子结点为 R。则: 先序遍历:NLR(N 在最前面)根左右 ...
1 2 3 4 5 ... 20
收藏数 2,353
精华内容 941
热门标签
关键字:

swift 遍历data