2015-09-26 23:26:32 apple890111 阅读数 442

时隔一个月没写博客了,这段时间由于杂事繁多,没有及时整理好学习内容。现在就将笔者在这段时间里学习的iOS项目和iOS面试有关的题目整理出来呈现给大家。

本项目是取自传智播客的教学项目,加入笔者的修改和润饰。

1. 项目名称:加法计算器

2. 项目截图展示

这里写图片描述

3. 代码


#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,weak) IBOutlet UITextField *num1;
@property (nonatomic,weak) IBOutlet UITextField *num2;

@property (nonatomic,weak) IBOutlet UILabel *result;//标签属性显示结果

//计算方法声明
- (IBAction)compute;//注意:如果删除此句本程序仍然能执行,一般接口都是属性。
@end

@implementation ViewController

- (IBAction)compute{

    //1. 获取界面上两个文本框的内容(字符串)
    NSString *n1 = self.num1.text;
    NSString *n2 = self.num2.text;

    //2. 将文本框中的内容相加
    int result = n1.intValue + n2.intValue;

    //3. 显示结果,在右侧的标签中
    self.result.text = [NSString stringWithFormat:@"%d",result];

    //4. 关闭键盘
    [self.view endEditing:YES];//让视图关闭键盘,无论谁是第一响应者

}
@end

4. 必须掌握的代码段

  • 提取文本框中输入的字符串
NSString *n1 = self.num1.text;
  • 字符串转成整型
int result = n1.intValue + n2.intValue;
  • 改变Label的显示
self.result.text = [NSString stringWithFormat:@"%d",result];
  • 关闭键盘
[self.view endEditing:YES];

5. 笔记

  • 常见错误:setValue:forUndefinedKey:]: this class is not key value coding
    错误原因是:连线出问题了

  • 建议:把用于连线的一些方法和属性声明在.m文件的类扩展中

  • UIView&UIViewController的概念

    • UIView(视图)
      可以看得到,摸得到得东西,都可以理解为视图
      作用:布局界面的
      所有的控件,都继承自UIView,位置、宽度、高度…

    • UIViewController(视图控制器)
      一个UIViewController通常负责一个完整的”页面”视图中的逻辑控制。

2014-06-25 17:17:00 weixin_34247299 阅读数 23
// 某年某月的天数
- (NSInteger)dayCount:(NSInteger)years
{
    NSInteger count = 0;
    for (int i = 1; i <= 12; i++) {
        if (2 == i) {
            if((years % 4 == 0 && years % 100!=0) || years % 400 == 0) //是闰年
            {
                count = 29;
            }
            else
            {
                count = 28;
            }
            
        }else if (4 == i || 6 == i || 9 == i || 11 == i){
            count = 30;
        }else{
            count = 31;
        }
    }
    return count;
}
// 某天的星期
- (NSString * )whichWeek:(NSString *)dateStr
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setDateFormat:@"yyyyMMdd"];
    NSDate* inputDate = [inputFormatter dateFromString:dateStr];
    
    NSDateComponents *dateComps = [calendar components:NSCalendarUnitWeekday fromDate:inputDate];
    
    NSInteger weekDay = dateComps.weekday;
    
    switch (weekDay) {
        case 1:
            return @"星期日";
            break;
        case 2:
            return @"星期一";
            break;
        case 3:
            return @"星期二";
            break;
        case 4:
            return @"星期三";
            break;
        case 5:
            return @"星期四";
            break;
        case 6:
            return @"星期五";
            break;
        case 7:
            return @"星期六";
            break;
        default:
            return @"";
            break;
    }
}

 

2017-03-06 10:23:37 heixi1254 阅读数 254

1、尚学堂_ios_杨建明_1.1常用终端命令
2、尚学堂_ios_杨建明_1.2vi、gcc使用
3、尚学堂_ios_杨建明_1.3计算机基础(一)
4、尚学堂_ios_杨建明_1.4整体介绍
5、尚学堂_ios_杨建明_1.5第一个C程序
6、尚学堂_ios_杨建明_2.1基本数据类型
7、尚学堂_ios_杨建明_2.2格式化输出
8、尚学堂_ios_杨建明_2.3输出
9、尚学堂_ios_杨建明_2.4常量
10、尚学堂_ios_杨建明_2.5变量
11、尚学堂_ios_杨建明_2.6输入
12、尚学堂_ios_杨建明_3.1基本概念
13、尚学堂_ios_杨建明_3.2基本运算符
14、尚学堂_ios_杨建明_3.3逻辑运算与类型转换mp4
15、尚学堂_ios_杨建明_3.4练习
16、尚学堂_ios_杨建明_4.1控制语句-分支语句
17、尚学堂_ios_杨建明_4.2Switch语句
18、尚学堂_ios_杨建明_4.3循环语句01
19、尚学堂_ios_杨建明_4.4循环语句02
20、尚学堂_ios_杨建明_4.5循环语句03
21、尚学堂_ios_杨建明_4.6循环结构-秒表设计
22、尚学堂_ios_杨建明_4.7阶段小测1
23、尚学堂_ios_杨建明_4.8阶段小测2
24、尚学堂_ios_杨建明_5.1一维数组1
25、尚学堂_ios_杨建明_5.2一维数组2
26、尚学堂_ios_杨建明_5.3一维数组3
27、尚学堂_ios_杨建明_5.4一维数组4-冒泡
28、尚学堂_ios_杨建明_6.1二维数组
29、尚学堂_ios_杨建明_6.2数组常用算法
30、尚学堂_ios_杨建明_7.1字符串表示方法
31、尚学堂_ios_杨建明_7.2字符串练习
32、尚学堂_ios_杨建明_7.3字符串的输入输出
33、尚学堂_ios_杨建明_7.4字符串操作函数
34、尚学堂_ios_杨建明_8.1函数的基本概念和定义
35、尚学堂_ios_杨建明_8.2函数的声明调用及返回值
36、尚学堂_ios_杨建明_9.1函数的应用
37、尚学堂_ios_杨建明_9.2~9.3递归和const修饰函数参数
38、尚学堂_ios_杨建明_10.1-10.2指针的概念及指针变量
39、尚学堂_ios_杨建明_10.3指针运算
40、尚学堂_ios_杨建明_10.4指针练习-字符串比较
41、尚学堂_ios_杨建明_10.5指针练习-字符串拼接复制
42、尚学堂_ios_杨建明_11.1指针二(上)
43、尚学堂_ios_杨建明_11.2指针二(下)
44、尚学堂_ios_杨建明_11.3指针二(中)
45、尚学堂_ios_杨建明_12.1指针三(上)
46、尚学堂_ios_杨建明_12.2指针三(中)
47、尚学堂_ios_杨建明_12.3指针三(下)
48、尚学堂_ios_杨建明_13.1动态内存分配
49、尚学堂_ios_杨建明_14.1结构体
50、尚学堂_ios_杨建明_14.2结构体的使用
51、尚学堂_ios_杨建明_14.3结构体的大小
52、尚学堂_ios_杨建明_14.4结构体练习

尚学堂_杨建民_OC_<1>_OC简介与Xcode使用.mp4
尚学堂_杨建民_OC_<2>_类与对象.mp4
尚学堂_杨建民_OC_<3>_属性的存取方法与点语法.mp4
尚学堂_杨建民_OC_<4>_@property的进一步说明.mp4
尚学堂_杨建民_OC_<5>_方法定义的进一步说明.mp4
尚学堂_杨建民_OC_<6>_字符串对象.mp4
尚学堂_杨建民_OC_<7>_继承.mp4
尚学堂_杨建民_OC_<8>_多态.mp4
尚学堂_杨建民_OC_<9>_动态绑定与动态类型检查.mp4
尚学堂_杨建民_OC_<10>_内存管理初步.mp4
尚学堂_杨建民_OC_<11>_自动释放池.mp4
尚学堂_杨建民_OC_<12>_分类.mp4
尚学堂_杨建民_OC_<13>_协议.mp4
尚学堂_杨建民_OC_<14>_NSArray数组对象.mp4
尚学堂_杨建民_OC_<15>_NSDictionary词典对象.mp4
尚学堂_杨建民_OC_<16>_NSNumber数字对象.mp4
尚学堂_杨建民_OC_<17>_NSSet集合对象.mp4
尚学堂_杨建民_OC_<18>_NSValue数据对象.mp4
尚学堂_杨建民_OC_<19>文件操作1.mp4
尚学堂_杨建民_OC_<20>_文件操作2.mp4


01_ios开发基本介绍_虚拟化介绍_创建虚拟机
02_虚拟机进一步配置安装mac系统
03_mac安装完成_进入系统的初始化配置
04_虚拟机快照功能使用_显卡_vmwaretools安装_文件目录共享配置
05_mac系统使用介绍_快捷键_终端命令控制_ls_vi_cd_ifconfig等命令
06_ios开发_appleid注册_xcode一步一步安装_hellworldc语言
07_基本数据类型_printf_变量作用域_c语言内存开篇
08_c语言内存分区-静态分区_全局区-static(静态全局 静态局部变量)_extern-register
09_指针_二级指针
10_三级指针和n级指针问题
11_字符数组_指针指向的字符串_c语言类存常量去剖析
12_函数指针_指针函数
13_01c语言值传递问题_基于内存分析
13_02c语言参数返回值_结合内存分析
14_内存操作_malloc_calloc_realloc_free
15_野指针_c语言编程陷阱剖析
16_void*空类型指针使用_使用空类型指针实现通用值交换
17_结构体_3种声明方式_3种初始化_指针指向结构体
18_c语言预处理_宏定义_#_##_反斜杠使用
19_c语言预处理文件包含_条件编译
20_gcc概述_编译理解_gcc安装
21_gcc查看编译的每一步骤彻底明白c语言的编译


下载地址:http://www.feixueteam.net/thread-506-1-1.html
2015-09-22 20:45:37 u012588310 阅读数 540

iOS之时间:

1NSDate时间戳,即代表某一个时间点

2NSCalendar提供了不同历法的时间信息,支持日历的计算

3NSDateFomatter在特定历法下的时间表示,基本用于不同历法的时间转换,默认是阳历NSDatecomponents是获取可读时间表示方式,比如等,和NSCalendar一起用,默认是阳历;还可以表示一个时间段,比如几周,几月,几年;还可以获取在当前历法下某一时间点的前或者后一个时间点

4、NSLoclale 根据不同的语言环境,返回不同的语言的时间数据,默认是当前系统设置的语言格式


上代码:

1NSDateComponents的用法

(1)根据一个时间点,获取他在特定日历下的所有信息
//  先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//  通过已定义的日历对象,获取某个时间点的NSDateComponents表示,并设置需要表示哪些信息(NSYearCalendarUnit, NSMonthCalendarUnit, NSDayCalendarUnit等)
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[NSDate date]];
NSLog(@"year(年份): %i", dateComponents.year);
NSLog(@"quarter(季度):%i", dateComponents.quarter);
NSLog(@"month(月份):%i", dateComponents.month);
NSLog(@"day(日期):%i", dateComponents.day);
NSLog(@"hour(小时):%i", dateComponents.hour);
NSLog(@"minute(分钟):%i", dateComponents.minute);
NSLog(@"second(秒):%i", dateComponents.second);

//  Sunday:1, Monday:2, Tuesday:3, Wednesday:4, Friday:5, Saturday:6
NSLog(@"weekday(星期):%i", dateComponents.weekday);

//  苹果官方不推荐使用week
NSLog(@"week(该年第几周):%i", dateComponents.week);
NSLog(@"weekOfYear(该年第几周):%i", dateComponents.weekOfYear);
NSLog(@"weekOfMonth(该月第几周):%i", dateComponents.weekOfMonth);
(2)设置一个时间点,获取他在特定日历下的所有信息,或者前后的时间信息
//  先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//  定义一个NSDateComponents对象,设置一个时间点
NSDateComponents *dateComponentsForDate = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:6];
[dateComponentsForDate setMonth:5];
[dateComponentsForDate setYear:2004];

//  根据设置的dateComponentsForDate获取历法中与之对应的时间点
//  这里的时分秒会使用NSDateComponents中规定的默认数值,一般为0或1。
NSDate *dateFromDateComponentsForDate = [greCalendar dateFromComponents:dc];
//  定义一个NSDateComponents对象,设置一个时间段
NSDateComponents *dateComponentsAsTimeQantum = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:6];

//  在当前历法下,获取6天后的时间点
NSDate *dateFromDateComponentsAsTimeQantum = [greCalendar dateByAddingComponents:dateComponentsAsTimeQantum toDate:[NSDate date] options:0];
(3)获取这两个时间点的时差
//  先定义一个遵循某个历法的日历对象
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//  根据两个时间点,定义NSDateComponents对象,从而获取这两个时间点的时差
NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit fromDate:[NSDate dateWithTimeIntervalSince1970:0] toDate:[NSDate date] options:0];
NSLog(@"number of years:%i", dateComponents.year);

(4)
//  当前时间对应的月份中有几天
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]].length;
//  当前时间对应的月份中有几周(前面说到的firstWeekday会影响到这个结果)
[[NSCalendar currentCalendar] rangeOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]].length;
//  当前时间对应的周是当前年中的第几周
[[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekOfYearCalendarUnit inUnit:NSYearCalendarUnit forDate:self];
[[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]];
//  当前时间对应的周是当前月中的第几周
[[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekOfMonthCalendarUnit inUnit:NSYearCalendarUnit forDate:self];
[[NSCalendar currentCalendar] ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]];



2NSDate的一些用法,因为有时区概念timeZone,所以有时候 — 时间与字符串的转化挺麻烦的

有一个小技巧就是,将NSDateFormatter存进当前线程中,这样不用每次新建NSDateFormatter

对象了,因为每次新建NSDateFormatter对象是非常耗时间的,容易阻塞主线程

(1)时间转字符串  时区如果没有则默认是当前系统设置的时区
+ (NSString *)stringFromDate:(NSDate *)date andFormat:(NSString *)format withTimeZone:(NSTimeZone *)timeZone
{
    if (! date) {
        date = [NSDate date];
    }
    if (! format) {
        format = @"yyyyMMdd HH:mm:ss";
    }
    
    NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary;
    NSMutableDictionary *dateFormatters = nil;
    
    @synchronized(threadDict)
    {
        dateFormatters = threadDict[@"dateFormatters"];
        if(dateFormatters == nil)
        {
            dateFormatters = [NSMutableDictionary dictionary];
            threadDict[@"dateFormatters"] = dateFormatters;
        }
    }
    
    NSDateFormatter *formatter = dateFormatters[format];
    if(formatter == nil)
    {
        formatter = [[NSDateFormatter alloc] init];
        formatter.timeZone = [NSTimeZone systemTimeZone];
        if([timeZone isKindOfClass:[NSTimeZone class]])
        {
            formatter.timeZone = timeZone;
        }
        
        formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
        formatter.dateFormat = format;
        dateFormatters[format] = formatter;
    }
         
    return [formatter stringFromDate:date];
}
时间转零时区的字符串
+ (NSString *)stringFromDate:(NSDate *)date andFormat:(NSString *)format
{
    return [self stringFromDate:date andFormat:format withTimeZone:nil];
}
时间转中国时区的字符串
+ (NSString *)stringFromDate:(NSDate *)date andGMT8Format:(NSString *)format
{
    return [self stringFromDate:date andFormat:format withTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
}
字符串转时间,时区为当前系统设置的时区
+ (NSDate *)dateFromString:(NSString *)dateStr withFormatter:(NSString *)format
{
    NSAssert(dateStr && format, nil);
    
    NSMutableDictionary *threadDict = [NSThread currentThread].threadDictionary;
    NSMutableDictionary *dateFormatters = nil;
    
    @synchronized(threadDict)
    {
        dateFormatters = threadDict[@"dateFormatters"];
        if(dateFormatters == nil)
        {
            dateFormatters = [NSMutableDictionary dictionary];
            threadDict[@"dateFormatters"] = dateFormatters;
        }
    }
    
    NSDateFormatter *formatter = dateFormatters[format];
    if(formatter == nil)
    {
        formatter = [[NSDateFormatter alloc] init];
        formatter.timeZone = [NSTimeZone systemTimeZone];
        
        formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
        formatter.dateFormat = format;
        dateFormatters[format] = formatter;
    }
    
    return [formatter dateFromString:dateStr];
}
//  字符串转时间 直接转 零时区
+ (NSDate *)dateZeroFromString:(NSString *)dateStr withFormatter:(NSString *)format
{
NSAssert(dateStr && format, nil);
NSDateFormatter *formatter = nil;
if(formatter == nil)
{
formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
formatter.dateFormat = format;
}
return [formatter dateFromString:dateStr];
}




没有更多推荐了,返回首页