【IOS】IOS开发问题解决方法索引(六)
1 【Network】使用AFNetworking2.0请求数据时出现错误Requestfailed:unacceptablecontent-type:text/html解决方法
使用AFNetworking 2.0 请求数据时出现错误 Request failed: unacceptablecontent-type: text/html 解决方法
添加一行
manager.responseSerializer.acceptableContentTypes= [NSSet setWithObject:@"text/html"];
http://www.haogongju.net/art/2407859
2 【JS】Js 常用调试的方法
http://www.cnblogs.com/Look_Sun/archive/2010/08/06/1793643.html
3 【JS】Safari调试工具
如何Enable - SafariPrefernces --> Advanced最下面的选项
勾选 然后你就可以在右键菜单上看到InspectElement选项了 - 跟Chrome一模一样
4 【地理位置】APP获取本地地理位置时注意
APP中获取本地地理位置时,要注意打开APP的地理位置授权,位置在设置—>隐私—>定位服务
不然获取不到位置信息,而且没有提示,而且APP一旦移除重新安装,需要重新设置。
5 【macox】mac命令行下怎么切换到root用户
可以使用sudo -i 然后输入密码即可
6 【js】遍历js对象并获取某一个成员对象
for(var app in callbackData)
{
var appObj = callbackData[app];
if(appObj != null && appObj.applianceId != undefined &&appObj.applianceId == curAppID)
{
_userApplianceInfo = appObj;
break;
}
}
7 Objective-C自定义NSLog宏
/*
XCode LLVM XXX - Preprocessing中Debug会添加 DEBUG=1 标志
*/
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(FORMAT, ...) nil
#endif
8 【兼容性】IOS8中,CLLocationManagerDelegate不调用didUpdateLocations
CLLocationManagerDelegate不调用didUpdateLocations
http://www.cocoachina.com/bbs/read.php?tid=259171
iOS8下的开发变化
http://www.cocoachina.com/bbs/read.php?tid=217107
需要在使用CoreLocation前调用方法
requestWhenInUseAuthorization()
或者
requestAlwaysAuthorization()
并在Info.plist中加入两个缺省没有的字段
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
9 计算指定时间与当前的时间差
计算指定时间与当前的时间差
http://blog.csdn.net/xinshou_jiaoming/article/details/7068328
计算指定时间与当前的时间差 比如,3天前、10分钟前(这个在项目中经常遇到,所以记录了下来)
以下是实现方法:
/**
*计算指定时间与当前的时间差
*@paramcompareDate 某一指定时间
*@return多少(秒or分or天or月or年)+前 (比如,3天前、10分钟前)
*/
+(NSString *) compareCurrentTime:(NSDate*) compareDate
//
{
NSTimeInterval timeInterval = [compareDate timeIntervalSinceNow];
timeInterval = -timeInterval;
long temp = 0;
NSString *result;
if (timeInterval < 60) {
result = [NSStringstringWithFormat:@"刚刚"];
}
elseif((temp = timeInterval/60) <60){
result = [NSStringstringWithFormat:@"%d分前",temp];
}
elseif((temp = temp/60) <24){
result = [NSStringstringWithFormat:@"%d小前",temp];
}
elseif((temp = temp/24) <30){
result = [NSStringstringWithFormat:@"%d天前",temp];
}
elseif((temp = temp/30) <12){
result = [NSStringstringWithFormat:@"%d月前",temp];
}
else{
temp = temp/12;
result = [NSStringstringWithFormat:@"%d年前",temp];
}
return result;
}
以下是NSDate中的常用方法:
/**
- (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate*)refDate;
初始化为以refDate为基准,然后过了secs秒的时间
- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;
初始化为以当前时间为基准,然后过了secs秒的时间
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;
以refDate为基准时间,返回实例保存的时间与refDate的时间间隔
- (NSTimeInterval)timeIntervalSinceNow;
以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔
- (NSTimeInterval)timeIntervalSince1970;
以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔
- (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
*/
//秒
// - (NSTimeInterval)timeIntervalSinceNow;
// 以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时间间隔
10 IOS开发常用数学函数
1、 三角函数
double sin (double);正弦
double cos (double);余弦
double tan (double);正切
2 、反三角函数
double asin (double); 结果介于[-PI/2,PI/2]
double acos (double); 结果介于[0,PI]
double atan (double); 反正切(主值), 结果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圆值), 结果介于[-PI,PI]
3 、双曲三角函数
double sinh (double);
double cosh (double);
double tanh (double);
4 、指数与对数
double exp (double);求取自然数e的幂
double sqrt (double);开平方
double log (double); 以e为底的对数
double log10 (double);以10为底的对数
double pow(double x, double y);计算以x为底数的y次幂
float powf(float x, float y);功能与pow一致,只是输入与输出皆为浮点数
5 、取整
double ceil (double); 取上整
double floor (double); 取下整
6 、绝对值
double fabs (double);求绝对值
double cabs(struct complexznum) ;求复数的绝对值
7 、标准化浮点数
double frexp (double f, int*p); 标准化浮点数, f= x * 2^p, 已知f求x,p ( x介于[0.5,1] )
double ldexp (double x, intp); 与frexp相反, 已知x, p求f
8 、取整与取余
double modf (double,double*); 将参数的整数部分通过指针回传, 返回小数部分
double fmod (double, double);返回两参数相除的余数
9 、其他
double hypot(double x, doubley);已知直角三角形两个直角边长度,求斜边长度
double ldexp(double x, intexponent);计算x*(2的exponent次幂)
double poly(double x, intdegree, double coeffs [] );计算多项式
nt matherr(struct exception*e);数学错误计算处理程序
转载:http://blog.csdn.net/zyc851224/article/details/7843859
11 IOS获取屏幕尺寸与分辨率
IOS获取屏幕分辨率
http://blog.csdn.net/tangaowen/article/details/7597535
获取屏幕分辨率是个很有用的功能,尤其在一些游戏相关的开发中,图形的绘制与屏幕分辨率密不可分。得到当前屏幕的分辨率是必不可少的支持。
获取屏幕分辨率可以两步走
1、得到当前屏幕的尺寸:
CGRect rect_screen = [[UIScreenmainScreen]bounds];
CGSize size_screen= rect_screen.size;
2、获得scale:
CGFloat scale_screen = [UIScreenmainScreen].scale;
此时屏幕尺寸的宽高与scale的乘积就是相应的分辨率值。
12 iPhone开发分辨率
1.iPhone5分辨率320x568,像素640x1136,@2x
2.iPhone6分辨率375x667,像素750x1334,@2x
3.iPhone6Plus分辨率414x736,像素1242x2208,@3x
这里所注的都是已经添加相关尺寸loading图后的开发分辨率和像素数,其中iphone6plus最终的物理分辨率会被苹果自动缩放到1080p(缩放比例1.14)。
iPhone6分辨率与适配
http://www.cocoachina.com/ios/20140912/9601.html
13 【编译】Cannot assign to ‘self‘outside of a method in the init family
有时候我们重写父类的init方法时不注意将init后面的第一个字母写成了小写,在这个方法里面又调用父类的初始化方法(self= [super init];)时会报错,错误信息如下:error:Cannot assign to ‘self‘ outside of a methodin the init family
原因:只能在init方法中给self赋值,Xcode判断是否为init方法规则:方法返回id,并且名字以init+大写字母开头+其他 为准则。例如:-(id) initWithXXX;
出错代码:-(id) Myinit{
self = [super init];
……
}
解决方法:-(id) initWithMy
{
self = [super init];
}
如下代码:
仅仅因为大小写问题,将initWithDelegate写成了-(id) initwithDelegate,就会报错
14 CoreData临时实体对象
NSEntityDescription *entity = [NSEntityDescription entityForName:NSStringFromClass([IMUserInfoEntity class]) inManagedObjectContext:[[IMDataModelCoreDataStorage shareInstance] mainThreadManagedObjectContext]];
IMUserInfoEntity *userTmpEntity = [[IMUserInfoEntity alloc] initWithEntity:entityinsertIntoManagedObjectContext:nil];
15 【Storyboard】在Storyboard中添加子View后,页面控件不显示问题
问题:
在Storyboard的一个ViewController中添加子View后,再在代码中新建一个子View来替代此View,导致在代码中添加按钮控件,按钮不显示,但是可以接收到按钮事件。
//初始化地图View
if (!_bMapView) {
_bMapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 20, SCREEN_BOUNDS.size.width, SCREEN_BOUNDS.size.height * 0.05)];//300 [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
}
self.mapView = _bMapView;
if (![self.view.subviews containsObject:self.mapView]) {
[self.view addSubview:self.mapView];
}
UIButton *_provinceButton = [[UIButton alloc] initWithFrame:CGRectMake(120, 120, 100, 40)];
_provinceButton.titleLabel.text = @"TestButton";
_provinceButton.titleLabel.textColor = [UIColor yellowColor];
[_provinceButton addTarget:self action:@selector(TestprovinceButtonClicked:)forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_provinceButton];
解决方案:
在Storyboard的ViewController中添加的子View已经实例化了,通过简单地替换操作,不会使其实例自动释放,因为已经作为子View,添加进ViewController所在的View中了。需要手动先将其从SuperView移除,然后再重新添加新View的实例。
//初始化地图View
if (!_bMapView) {
_bMapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 20, SCREEN_BOUNDS.size.width, SCREEN_BOUNDS.size.height * 0.05)];//300 [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
}
if (self.mapView) {
[self.mapView removeFromSuperview];
}
self.mapView = _bMapView;
if (![self.view.subviews containsObject:self.mapView]) {
[self.view addSubview:self.mapView];
}
16 【控件】UIButton控件文字不显示
//此行页面不会显示文字
_provinceButton.titleLabel.text = @"TestButton";
//此行页面显示文字
[_provinceButton setTitle:@"Test1" forState:UIControlStateNormal];
17 【CoreData】like查询
查询不到结果写法
// NSPredicate*predicate=[NSPredicate predicateWithFormat:@"province LIKE ‘%@?‘ AND cityLIKE ‘%@?‘ AND county =%@",tempEntity.province,tempEntity.city,tempEntity.county];
可查询到结果写法:
NSString *predStr = [NSString stringWithFormat:@"provinceLIKE \‘%@?\‘ AND city LIKE \‘%@?\‘ AND county = \‘%@\‘",tempEntity.province,tempEntity.city,tempEntity.county];
NSPredicate*predicate=[NSPredicate predicateWithFormat:predStr];
NSString * predStr = [NSString stringWithFormat:@"provinceLIKE \‘%@%%\‘ AND city LIKE \‘%@%%\‘ AND county = \‘%@\‘",tempEntity.province,tempEntity.city,tempEntity.county];
18 iOS字符串 中包含 % 百分号的方法
百分号的转换,NSString中需要格式化的字符串中百分号使用%%表示,而char*中百分号也是使用%%表示。
例如:NSLog(@"%%%@%%",@"hello"),控制台会打印出%hello%。
19 【UILabel】自适应高度和自动换行
1. //初始化label
2. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];
3. //设置自动行数与字符换行
4. [label setNumberOfLines:0];
5. label.lineBreakMode = UILineBreakModeWordWrap;
6. // 测试字串
7. NSString *s = @"这是一个测试!!!adsfsaf时发生发勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什顿。。。";
8. UIFont *font = [UIFont fontWithName:@"Arial" size:12];
9. //设置一个行高上限
10. CGSize size = CGSizeMake(320,2000);
11. //计算实际frame大小,并将label的frame变成实际大小
12. CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
13. [label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];
IOS7以上做法
http://www.tuicool.com/articles/eYbAv2
UILabel自适应高度和自动换行
http://blog.csdn.net/csj1987/article/details/6662852
iOS学习5:UILabel的使用
http://bbs.9ria.com/thread-244444-1-1.html
20 Mac上颜色提取工具
很多人有这个需求:把鼠标放在一个点上,显示该点颜色的RGB值。其实苹果电脑的Mac OS X系统就自带鼠标所在点颜色RGB值查看工具:数码测色计,只是藏得比较深罢了。打开Finder(Dock栏第一个笑脸图标),选择应用程序--实用工具--数码测色计,双击即可启动。
3 N6 ?: ?: a9 n(s* n 七度苹果电脑软件
$ U4 a0 _# W* \7N 七度苹果电脑软件
数码测色计界面截图
这个界面大家都能看懂了吧,中间是预览鼠标所处位置得像素,右侧显示颜色RGB值,取点范围大小可以通过滑动条来调节。
& v# u$ |# W0t( h2 {‘ S 七度苹果电脑软件
+ }* v) C9K" b2 `7 J 七度苹果电脑软件
在数码测色计得下拉菜单里选择RGB数值模式,有“255,255,255”那种,也有“0000FF”那种8 r% E F Z( E8 t# k 七度苹果电脑软件
* N& _+ k) [9w 七度苹果电脑软件
OK,说完了,很简洁的一个苹果Mac OS X系统自带工具,但很有用。嫌它“埋”得太深,可以直接拖到上级得“应用程序”目录里(Mac的精华就是“想拖就拖”)。Enjoy your Mac
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。