IOS開發(fā)學(xué)習(xí)筆記之問題集錦解決方案
IOS開發(fā)學(xué)習(xí)筆記之問題集錦解決方案是本文要介紹的內(nèi)容呢,主要講解了UITextField、UITableView、NSPredicate等一些問題的解決,我們先來看詳細(xì)內(nèi)容。
用正則表達(dá)式使UITextField接受規(guī)定的值 只能輸入非零開頭的正整數(shù)用下面的代碼
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
 - (NSRange)range replacementString:(NSString *)string{
 - NSString *result = [textField.text stringByReplacingCharactersInRange:range withString:string];
 - if ([result length] == 0) return YES;
 - // Allow delete all character which are entered.
 - NSString *regex = @"^[0-9]*[1-9][0-9]*$";
 - NSPredicate *prd = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
 - return [prd evaluateWithObject:result];
 
UITableView設(shè)置背景為透明時(shí)遇到的問題 UITableView設(shè)置背景顏色為clearColor,設(shè)置類型為Grouped。這里每個(gè)Group的四個(gè)角會(huì)有黑的。解決辦法:
在viewDidLoad中寫入:
- TableView.backgroundView = nil;
 - TableView.backgroundColor = [UIColor clearColor];
 - TableView.opaque = NO;
 
UITextField中顯示表情 表情列表: http://pukupi.com/post/1964
比如微笑是:
- 
 - label.text = @"\ue415";
 
效果如下:
編譯發(fā)布版本的時(shí)候移除NSLog輸出的方法
只需要加入到pch文件中即可,__OPTIMIZE__這個(gè)編譯選項(xiàng)是發(fā)布版本才有的,所以在編譯調(diào)試版本的時(shí)候可以看到Log,而發(fā)布版本則沒有Log。
- #ifndef __OPTIMIZE__#define NSLog(...) NSLog(__VA_ARGS__)#else#define NSLog(...) {}
 - #endif
 
NSPredicate筆記
- NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF like[c] %@", @"aa*bb"];
 
其中:SELF大小寫都行。
aa*bb使用了通配符,*號(hào)只能寫在變量中,而不能這樣
- @"SELF like[c] %@*%@", @"aa", @"bb"
 
字符串本來是要用引號(hào)括起來的,不過這里不用加,NSPredicate會(huì)自動(dòng)加。
測(cè)試布爾值
- NSPredicate *p = [NSPredicate predicateWithFormat:@"self == NO"];
 - BOOL b1 = [p1 evaluateWithObject:[NSNumber numberWithBool:NO]];
 - NSPredicate *p2 = [NSPredicate predicateWithFormat:@"self == %@",
 - [NSNumber numberWithBool:NO]];
 - BOOL b2 = [p2 evaluateWithObject:[NSNumber numberWithBool:NO]];
 
動(dòng)態(tài)屬性名
下面這種NSPredicate
- NSPredicate *p = [NSPredicate predicateWithFormat:@"name = %@", @"Jimmy"];
 
有時(shí)候我們可能想讓name這個(gè)關(guān)鍵字,也變成變量,寫在外面,那樣就可以寫一個(gè)更通用的NSPredicate了。于是很自然地想到了下面的代碼:
- NSString *key = @"name";
 - NSString *value = @"Jimmy";
 - NSPredicate *p = [NSPredicate predicateWithFormat:@"%@ = %@", key, value];
 
這樣,如果在執(zhí)行到第三句之前,我們可以改變key和value的值,讓其更通用。想法是好的,但是這樣是錯(cuò)的,前面說過,NSPredicate要自動(dòng)添加引號(hào),所以最后得到的格式應(yīng)該是@"'name' = 'Jimmy'"。明顯不對(duì)。要做的就是:
- NSString *key = @"name";
 - NSString *value = @"Jimmy";
 - NSPredicate *p = [NSPredicate predicateWithFormat:@"%K = %@", key, value];
 
小結(jié):IOS開發(fā)學(xué)習(xí)筆記之問題集錦解決方案的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!
















 
 
 



 
 
 
 