ios小功能

1.开 发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null~,然后我们把此值赋值给 NSArray,NSdictionary,或是NSString,然后我们会判断此值为null时,所做的处理,而通常惯性思维判断时我们都会 写:if(dict == nil)或是if(dict == Nil)或是if(dict == NULL)再或是if(dict isEqual nil),我们发现,都不好用,根本没有起到判断的作用~后来我才发现,原来不能这样来判断。

简单点说,就是当字典,数组为null时,后台打印的输出结果是这样:


然后,我们需要在代码判断时利用[NSNull null]来判断,具体如:


isEqual:[NSNull null] 就搞定了,nsarray也是同样的道理。

2.

控制台打印:str=(null) 代表着 字符串或数组或字典是一个空指针,(而非空字符串)判断的时候,直接用:

if(str == nil)就可以了。如下图所示:



而控制台打印:str =  <null>,代表着这是一个空字符串,赋值为空,指针是存在的,只是内容为空,这种判断需要使用:

if(str is equal [NSNull null ]) ,因为在ios上,内容为空不能简单的判断str==null(null 在ios上得用[NSNull null])


一般这种情况是,服务器那边是null,直接返回@"null"的字符串,这样在ios这边不好判断,最好跟后台沟通,如果遇到null值,返回@"",好做判断


3.   使用了storyboard,运行程序模拟器显示黑屏,这是由于,操作不当,获取点击了例如  navigationViewController属性种的in init ViewController选项,然后重置了当前进入程序后的首界面,解决办法就是选择入口界面,属性种重新勾选此选项。

 

StoryboardApp[8593:207] Failed to instantiate the default view controller for UIMainStoryboardFile 'MainStoryboard' - perhaps the designated entry point is not set?

StoryBoard中没有一个view controller设置了Initial Scene。您需要选择一个view conroller作为story board的第一个界面:

 

4.如何在项目用代码打开AppStore软件(也就是访问appstore)


[java] view plaincopy
 
  1.           
  2. //        int m_appleID = 576337094; //        NSString *str = [NSString stringWithFormat: //                                 @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d", //                                 m_appleID ];   
  3.         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];  

把以上代码直接拷贝到想要实现点击跳转的操作方法内就可以了,通过appID,随意可以通过appstore打开应用,直接用url就可以链接到了。很简单,一般都用在检查更新的时候。

 

5,如何代码实现点击http://www.kaka.com或400-800-400或message实现跳转safari,phone或message?

只需要在相应的代码中写入:

1、调用 电话phone
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];

2、调用自带 浏览器 safari
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];

3、调用 自带mail
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];

4、调用 SMS
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

5,跳转到系统设置相关界面

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];


其中,发短信,发Email的功能只能填写要发送的地址或号码,无法初始化发送内容,如果想实现内容的话,还需要更复杂一些,实现其各自的委托方法。

若需要传递内容可以做如下操作:
加入:MessageUI.framework
 
#import <MessageUI/MFMessageComposeViewController.h>
 
实现代理:MFMessageComposeViewControllerDelegate

 

6,如何使屏幕一直保持唤醒状态?(就是不自动黑屏)


比如,如果我们做一个播放视频的功能时,想在播放的时候,不会自动进入屏保(黑屏)

只要在代码里加入这一行:

 

[java] view plaincopy
 
  1. [[UIApplication sharedApplication] setIdleTimerDisabled:YES];  

7.如何隐藏UINavigationBar


有的时候,我们的视图使用了Navigation Controller ,但是主界面(rootviewcontroller)或其它push进入的界面 想使用一个全屏的view,就是说,不显示顶部的navigationBar,这个时候,就需要我们来隐藏了。

 

//隐藏NavigationBar

-(void) viewWillAppear:(BOOL)animated{

    

    [self.navigationControllersetNavigationBarHidden:YESanimated:YES]; //设置隐藏

    [super viewWillAppear:animated];

}

-(void) viewWillDisappear:(BOOL)animated{


    [self.navigationControllersetNavigationBarHidden:NOanimated:YES];

    [super viewWillDisappear:animated];

        

}

8,点击UIButton 无法产生触摸事件

 

如果在UIImageView中添加了一个按钮,你会发现在默认情况下这个按钮是无法被点击的,需要设置UIImageView的userInteractionEnabled为YES:

imageView.userInteractionEnabled = YES;

设置为YES后,UIImageView内部的按钮就可以被点击了

9.如何获取手机硬件信息?

通过使用UIDevice: 

 

 

 

[[UIDevice currentDevice] systemName];
[[UIDevice currentDevice] systemVersion];//os version
[[UIDevice currentDevice] uniqueIdentifier];
[[UIDevice currentDevice] model];
[[UIDevice currentDevice] name];

 

真机上结果:
System Name: iPhone OS
System Version: 4.2.1
Unique ID: 9b5ded78d5fa0ac96250f8b4af0e46f40b96ea6d
Model: iPhone
Name: “wwk”的 iPhone

 

模拟器上结果:

 

System Name: iPhone OS
System Version: 4.2
Unique ID: 21FFE0FF-429B-5D0B-96D2-EADCA3203260
Model: iPhone Simulator
Name: iPhone Simulator

 

uniqueIdentifier:iPhone通过,向几个硬件标识符和设备序列号应用内部散列算法,而生成这一标识符。

 

http://blog.csdn.net/qiwancong/article/details/7914923 参考

 

原文地址:https://www.cnblogs.com/hualuoshuijia/p/4982890.html