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è)置背景為透明時遇到的問題 UITableView設(shè)置背景顏色為clearColor,設(shè)置類型為Grouped。這里每個Group的四個角會有黑的。解決辦法:
在viewDidLoad中寫入:
- TableView.backgroundView = nil;
- TableView.backgroundColor = [UIColor clearColor];
- TableView.opaque = NO;
UITextField中顯示表情 表情列表: http://pukupi.com/post/1964
比如微笑是:
- 
- label.text = @"\ue415";
效果如下:
編譯發(fā)布版本的時候移除NSLog輸出的方法
只需要加入到pch文件中即可,__OPTIMIZE__這個編譯選項是發(fā)布版本才有的,所以在編譯調(diào)試版本的時候可以看到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使用了通配符,*號只能寫在變量中,而不能這樣
- @"SELF like[c] %@*%@", @"aa", @"bb"
字符串本來是要用引號括起來的,不過這里不用加,NSPredicate會自動加。
測試布爾值
- 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]];
動態(tài)屬性名
下面這種NSPredicate
- NSPredicate *p = [NSPredicate predicateWithFormat:@"name = %@", @"Jimmy"];
有時候我們可能想讓name這個關(guān)鍵字,也變成變量,寫在外面,那樣就可以寫一個更通用的NSPredicate了。于是很自然地想到了下面的代碼:
- NSString *key = @"name";
- NSString *value = @"Jimmy";
- NSPredicate *p = [NSPredicate predicateWithFormat:@"%@ = %@", key, value];
這樣,如果在執(zhí)行到第三句之前,我們可以改變key和value的值,讓其更通用。想法是好的,但是這樣是錯的,前面說過,NSPredicate要自動添加引號,所以最后得到的格式應(yīng)該是@"'name' = 'Jimmy'"。明顯不對。要做的就是:
- NSString *key = @"name";
- NSString *value = @"Jimmy";
- NSPredicate *p = [NSPredicate predicateWithFormat:@"%K = %@", key, value];
小結(jié):IOS開發(fā)學(xué)習(xí)筆記之問題集錦解決方案的內(nèi)容介紹完了,希望本文對你有所幫助!