IOS Url Encode(POST上传的时候,汉字上传的格式为%AE这种形式),可以通过下面方法进行转换。
-(NSString*)UrlValueEncode:(NSString*)str
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8));
[result autorelease];
NSLog(@"%@",result);
return result;
}
常见问题的解决方案
在解析网络返回数据的时候,接收数据类型不匹配,比如:比如说返回的是NSNumber,接收用NSString。
4、数组越界的问题(常见情况是:先进行网络请求的语句,但是在下面语句紧接着就使用了接收网络数据的NSArray或者是NSMutableArray),对一个元素个数为0的数组进行objectAtIndex:操作,导致数组越界,解决方法是在从数组中取元素的时候,对数组进行[array count]判断;保证数组中元素个数不为0,然后再对数组进行操作。
网络返回数据为<null>时,不知道如何进行判断,出现这种情况的原因就是,后端返回的数据没有给默认值,可以通过[responseData isEqual:[NSNull null]]进行判断。
从网上下载的demo,在参照demo自己写的时候,莫名其妙的出现崩溃的情况,一般情况下都是,网上的Demo使用的时ARC,但是学生在自己工程里面使用的时MRC,导致某些对象提前释放。解决方法,在TARGETS-Build Phases-Compile Sources 对应的.m文件添加-fobjc-arc。如果想让某个类不使用ARC那么可以在TARGETS-Build
Phases-Compile Sources 对应的.m文件添加-fno-objc-arc。
在IOS7中UINavigationController中使用UITextView或者UIScrollView的时候,文本的对齐方式,垂直方向的对齐方式是居中对齐,不是上对齐,需要在viewDidlLoad里面添加:
automaticallyAdjustsScrollViewInsets
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){
self.automaticallyAdjustsScrollViewInsets = NO; // Avoid the top UITextView space, iOS7 (~bug?)
}
在使用UIScrollView的时候也会出现偏移。
在使用UICollectionView的时候,崩溃出现'UICollectionView must be initialized with a non-nil layout parameter’,原因是没有进行UICollectionViewFlowLayout的初始化。
解决方法:
UICollectionViewFlowLayout *layout= [[UICollectionViewFlowLayout alloc]init];
self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
[self.view addSubView:self.collectionView];
[self.collectionView registerClass:[UICollectionViewCell class]
forCellWithReuseIdentifier:@"Cell"];
self.collectionView.delegate=self;
self.collectionView.dataSource=self;
注意出现:delegate,dataSource协议的时候
self.collectionView.delegate=self;
self.collectionView.dataSource=self;
对应的在.h里面一定要加:<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
UITableViewCell的在IOS5和IOS6有不同的初始化方法,在IOS6中采用- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath对UITableViewCell进行初始化时,需要使用配套的- (void)registerClass:(Class)cellClass
forCellReuseIdentifier:(NSString *)identifier方法对UITableViewCell进行注册。
在UITableViewCell中动态展示数据的时候,可以在自定义Cell里面写一个类方法来专门计算Cell的高度。
得到当前工程的目录”$(SRCROOT)”
如果创建的工程,运行时发现self.view的高度只有480,那么原因就是缺少了4英寸的启动图片Default-568h@2x.png.