对于系统的Reminders,其主要作用是提供事件列表,用户可以向事件列表中添加提醒事件,同样,提供默认创建了两个事件列表,用户也可以根据需要自行创建新的事件列表,如下图: ?...使用日历和提醒事宜这两个应用,可以提高生活工作效率,例如邮件应用通过与日历的交互可以将会议邮件添加到用户的日程中,EventKit框架则是提供了接口与这两个应用进行交互。...使用如下代码可以添加新的日历,通常,第三方应用如果要向用户日历中添加事件,可以先添加一个新的日历: - (void)createNewCalendar { EKCalendar *calendar...,开发者可以对自定义的日历进行读写操作,其也是继承自EKObject对象,解析如下: @interface EKCalendar : EKObject // 通过制定的EKEventStore对象创建一个新的日历对象...EKEvent是EKCalendarItem的子类,其对应日历应用中的事件,解析如下: @interface EKEvent : EKCalendarItem // 创建一个新的事件对象 + (EKEvent
,可以用类似下面的方法创建时间端对象: // 创建一个时间段,从现在开始,共5个小时....基础 下图表格列出了两个时间段所有可能的关系: 可通过下列方法判断两个时间段的关系: isEqualToPeriod: isInside: contains: overlapsWith: intersects...可以像下面这样创建新的DTTimePeriodCollection集合: // 创建集合....NSDate 对象或一个 DTTimePeriod 对象与一个 时间段结合的相对关系.例如,你可以通过 periodsIntersectedByDate: 方法获取所有与某个时间有交集的时间段.这个方法会返回一个新的...DTTimePeriodChain 内部存储的时间段对象不允许有交集.这种集合很适用于连续会议或约会等日程类事务的建模. 创建一个新的 DTTimePeriodChain 集合: // 创建集合.
创建当前时间 NSDate *date = [NSDate date]; 从现在开始的24小时 NSTimeInterval a_day = 24*60*60; NSDate...*tomorrow = [NSDate dateWithTimeIntervalSinceNow:a_day]; 根据已有日期创建日期 NSTimeInterval a_day = 24*60...较晚的日期 NSDate *laterDate = [tomorrow laterDate:date]; NSLog(@"laterDate = %@",laterDate);...//两个日期之间相隔多少秒 NSTimeInterval secondsInterval= [date timeIntervalSinceDate:tomorrow]; NSLog(...@"secondsInterval= %lf",secondsInterval); //通过NSCalendar类来创建日期 NSDateComponents *comps = [[NSDateComponentsalloc
使用这个控件时,如果你能配置正确,当用户滚动车轮到一个新的日期或者时间上时,利用UIControlEventValueChanged触发事件。...二:UIDatePicker的使用 2.1 创建并添加一个UIDatePicker对象 // // ViewController.m // DatePicker // // Created by...应用程序必须实现一个计数器(NSTimer对象),让倒计时中的时间不断减少。 四:日期范围 你可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。...两个方法都需要NSDate 对象作参数: NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];...= minDate; datePicker.maximumDate = maxDate; 如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。
使用NSDateFormatter完成NSDate和NSString之间的转换的步骤如下: 创建一个NSDateFormatter对象 调用NSDateFormatter的setDateStyle:、setTimeStyle...从NSDate中分开获取各时间字段的数值的步骤如下: 创建NSCalendar对象 调用NSCalendar的components:fromDate:方法获取数值,返回一个NSDateComponents...对象 调用NSDateComponents的getter方法获取个时间字段的数值 使用个时间字段的数值来初始化NSDate对象的步骤如下: 创建NSCalendar对象 创建一个NSDateComponents...; 39 NSLog(@"获取的日期为:%@" , date); 40 } 41 } 三、对象复制 1、NSObject类提供了copy和mutableCopy方法,通过这两个方法即可复制已有对象的副本...简单来说就是深复制取完全的一个新的副本对象,副本对象与原对象没有任何交集,而浅复制则是原对象与副本对象之间还有交集。所谓交集指的是存在某一个指针变量指向同一个对象的情况。
当前时间创建NSDate NSDate *myDate = [NSDate date]; NSLog(@"myDate = %@",myDate); 2....从现在开始的24小时 NSTimeInterval secondsPerDay = 24*60*60; NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow...根据已有日期创建日期 NSTimeInterval secondsPerDay1 = 24*60*60; NSDate *now = [NSDate date]; NSDate...两个日期之间相隔多少秒 NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now]; NSLog(...通过NSCalendar类来创建日期 NSDateComponents *comp = [[NSDateComponentsalloc]init]; [comp setMonth:06
+ (id)distantPast 与 + (id)distantFuture 这两个是类方法,分别用来返回一个极早的时间点和一个极晚的时间点 NSDate *date = [NSDate...-(id)dateByAddingTimeInterval:(NSTimeInterval)seconds 返回以当前NSDate对象为基准,偏移多少秒后得到的新NSDate对象。...:(NSDate *)anotherDate 比较两个NSDate对象,返回较早/较晚的时间点,并以新NSDate对象的形式返回 NSDate *date = [NSDate dateWithTimeIntervalSince1970...America/Chicago (CST) offset -21600) 5. + (id)timeZoneForSecondsFromGMT:(NSInteger)seconds 根据零时区的秒数偏移返回一个新时区对象...如果startDate和interval均可以计算,则返回YES;否则返回NO unit -- 日历单位 datep -- 开始时间,通过参数返回 tip -- 日历单位所对应的秒数,通过参数返回
char *str3="C C string"; NSData *data1=[NSData dataWithBytes:str length:strlen(str)+1];//创建不可变的字节对象...(@"不可变的data1的长度是:%d,输出指针:%s",[data1 length],[data1 bytes]);//length是字节的长度,bytes是返回一个指针 NSData...:%@",mdata); } return 0; } 输出结果: 2014-08-10 17:19:46.795 TestNSData&NSDate[1214:303] 不可变的...data1的字节是: 2014-08-10 17:19:46.805 TestNSData&NSDate[1214:303] 不可变的data1的长度是...67210041 20432073 7472696e 672100> Program ended with exit code: 0 结果的说明:输出的data对象实际上是ASCII码的组合,每两个十六进制数字代表一个字母或者其他的
通过这些传感器可以获取到手机甚至用户的状态信息。 ...二、CMMotionManager CMMotionManager类是CoreMotion框架中非常核心的一个类,其用来进行设备运动信息的整体管理。...- (void)stopMagnetometerUpdates; //设备运动数据并非某个传感器的数据 而是上面3种传感器数据的组合与运算 //设备运动数据是否可用 @property(readonly...类提供对设备高度相关信息的数据支持,这个类是iOS 8后新加入的,CMAltimeter类解析如下: @interface CMAltimeter : NSObject //是否支持相对高度变化 + (...@property(readonly, nonatomic, nullable) NSNumber *floorsAscended; //通过楼梯下降的楼层数 @property(readonly,
)的使用做一个详细的总结。...NSPoint和CGPoint CGPoint和NSPoint是同义的 CGPoint代表的是二维平面中的一个点 CGPoint有2个成员 CGFloat x:表示该矩形原点的横坐标位置 CGFloat...NSDate NSDate可以用来表示时间,可以进行一些常见的日期\时间处理 一个NSDate对象就代表一个时间 [NSDate date]返回的就是当前时间,注意此时间是世界标准时间,准确时间应加上当前时区与世界标准时间的偏移量...// 创建时间 NSDate *now = [NSDate date]; // 创建时间格式化 NSDateFormatter *formatter = [[NSDateFormatter alloc...= [NSDate date]; // 创建日历对象 NSCalendar *calendar = [NSCalendar currentCalendar]; // 利用日历对象获取年月日时分秒,将需要获取的类型并入
所以讲到了实时获取运动数据,苹果还提供了另一个框架给我们使用 —— CoreMotion框架。在这个框架中,我们可以获取加速度、步数等等等等运动数据,今天我们主要是讲讲步数是怎么获取的。...然后生成两个时间,分别为查询步数的起止时间,CoreMotion中会保存七天的运动数据,假设我们生成的时间为startTime,endTime....分别对这两个时间进行初始化 class StepCounter: NSObject { private var startTime: NSDate?...//在这里我只是随意初始化, 你可以根据自己具体的时间周期去设置时间 startTime = NSDate() endTime = NSDate() CoreMotion框架中,专门有一个类是负责处理步数的...,就是CMPedometer,所以在这里我们想获取到步数信息,也要创建一个这个对象,并且同时创建一个int对象保存步数数据 private var pedometer: CMPedometer!
本文希望对 轻量泛型 做一个简单的介绍。更多信息,请参考 llvm 或者 与 Objective-C API 交互[1] 轻量泛型 是什么?...通常情况下,我们使用下面的语法声明数组: NSArray *dates; 通过在类型后面添加 NSDate *>,我们可以告诉编译器:这个数组只接受 NSDate 类型的实例。...NSArrayNSDate *> *dates; 下面,我们通过实例验证一下它的作用: NSArrayNSDate *> *dates; NSString *str = dates[2]; 当我们编译上述代码时...- (void)setObject:(U)obj forKeyedSubscript:(T)key; 验证 下面,我们写一个完整的 Demo 对上面的功能进行验证: // main.m @import...最后是两个 ObjCTypeParamDecl : KeyType 和 ObjectTYpe 总结 本文分享了轻量泛型的用法,并通过 clang 命令将对应的语法树进行了介绍。
; NSStringCompareOptions参数是一个枚举值举两个常用的 NSCaseInsensitiveSearch: 忽略大小写的比较....,唯一的key对应value,通过key来找到存储在字典中的value。...:@"xx_cc",@"name",@"18",@"age", nil]; // 也可以通过快速创建 key:value NSDictionary *dict2 = @{@"name":@"xx_cc...NSDate计算时间的方法 在当前时间的基础之上,新增指定的时间,得到的1个新的时间, 传入1个负数 就是在当前时间的基础之上减指定的秒数。...得到时间的各个部分,可以使用日期格式化器NSCalendar来得到,直接来看一个例子吧 NSDate *date = [NSDate date]; //1.创建1个日历对象.
//当前日前日期 NSDate *today = [NSDate date]; //时区 NSTimeZone *zone = [NSTimeZone systemTimeZone...*tomorrowDate = [[NSDate alloc]initWithTimeInterval:24 * 60 * 60 sinceDate:[NSDate date]]; //日历 ... NSDate *serverDate = [dateFomatter dateFromString:serverTimeStr]; NSDate *createDate = [...dateFomatter dateFromString:createTimeStr]; //算出两个Date的间隔 NSTimeInterval betweenTime = [serverDate...timeIntervalSinceDate:createDate]; //分离出标准格式里的年月日时分秒 NSDateFormatter *dateFomatter = [[NSDateFormatter
上篇博客我跟大家分享了如何在iOS系统中使用原生框架获取步数,又是大半个月过去了,运动模块的全部功能也总算完成了,也打算有始有终的把如何做一个跑步类App跟大家分享了。...运动类应用中,有一个很重要的模块就是计时器,当然,这个计时器不算复杂,只要有简单的开始、暂停以及复位功能即可。那么今天我们从Model层来看看这个计时器的逻辑实现。...我们先自己创建一个时间的Model class RunningTimer: NSObject { //MARK: var property private var timeLabel: UILabel...,首先是定义了一个timeLabel,这个变量主要是为了在初始化时,直接将View层要显示的Label绑定进来,timer即为一个计时器,顺便定义了两个数组,用来记录时间,因为在真实环境中,可能有若干次暂停...-> CFTimeInterval函数获取两个时间之间的时间戳差值。 最后再把前面那个秒数转格式化时间的方法也贴出来吧。
时间日期处理 1.NSDateFormatter 日期格式化 ①可以把NSString 类型转为 NSDate类型 举例 把 "2015-08-23 19:46:14" 转为NSDate类型 NSDateFormatter...NSDate *nowDate = [NSDate date]; //从beforeDate -> nowDate的时间间隔,秒 NSTimeInterval interval = [...nowDate timeIntervalSinceDate:beforeDate]; // 时间戳 // "time": "6456546455435",到1970年的时间 [...component:NSCalendarUnitDay fromDate:createDate]; NSLog(@"%zd %zd %zd", year, month, day); ②获得多个元素 // 创建日期类...)之间的时间间隔 NSCalendar *calendar = [NSCalendar currentCalendar]; NSCalendarUnit unit = NSCalendarUnitYear
2、timerWithTimeInterval这两个类方法创建出来的对象如果不用 addTimer: forMode方法手动加入主循环池中,将不会循环执行。...3、scheduledTimerWithTimeInterval这两个方法不需要手动调用fair,会自动执行,并且自动加入主循环池。 ...二、成员变量 @property (copy) NSDate *fireDate; 这是设置定时器的启动时间,常用来管理定时器的启动与停止 //启动定时器 timer.fireDate ...= [NSDate distantPast]; //停止定时器 timer.fireDate = [NSDate distantFuture]; @property (readonly)...@property NSTimeInterval tolerance; 这是7.0之后新增的一个属性,因为NSTimer并不完全精准,通过这个值设置误差范围。
func map(_ transform: (Element) throws -> T) rethrows -> [T] 解释: T 为泛型 transform: 闭包函数 我们需要给它传入一个有参数有返回值的闭包函数...[T] 函数会返回给我们一个T类型的数组 应用:我们有这样一个需求,给一组数据中大于20的数字乘以3 //1.先定义一个数组 var numbers = [21, 19, 7, 12] //2.创建一个有一个参数一个返回值的闭包函数...的数字变为 0 for ... in var numbers = Array(repeating: 3, count: 1000000) var date1 = NSDate() for i in 0....sorted(by areInIncreasingOrder: (Element, Element) -> Bool) -> [Element] 参数: areInIncreasingOrder 两个参数一个返回值得闭包...我们给1万个数组进行排序,测一下for in 循环排序的时间 // 冒泡排序法 ar date1 = NSDate() numbers.sort(by: {$0 > $1}) var swap:Int
iOS开发一款小巧简洁的日历控件 一、引言 日 历是iOS开发中有时会用到的一个UI控件,网上开源的代码也很多,我浏览过一些,大致有两种模式,一种是日历的逻辑由开发者自己实现,通过计算闰年与平...年来确定月份天数,另外一种模式是通过NSDate这个时间类,来获取日历的信息。...我个人认为后一种更加安全,代码性能也会更加优质,下面就是我用这种模 式实现的一个日历控件。 二、设计思路 1、先来看下效果吧 ? ? ?...1:0; //开始创建按钮 /** *这里的逻辑是有问题的,应该设计成cell的复用机制,而不应该重复耗性能的创建 有时间在优化 */ #warning 可以优化哦 ...view控件,如用block创建的按钮,提示框以及对json和模型做相关映射的处理类,如果这些东西有帮到你,我很开心,如果你发现一些问题或者优化建议,请一定告知我,我将十分感激,QQ316045346
领取专属 10元无门槛券
手把手带您无忧上云