iOS遇到的一些小問題的案例總結

1.可變數(shù)組中是不能添加除了對象以外的如CGFloat NSinteger double類型的,我們應該在用 addObject:添加這些對象以外的時候注意

[_all_Money addObject: @([_array[j] ExclusivePrice] * [_array[j] count])];

2.數(shù)組中內(nèi)部元素求和還有求平均值

NSArray *testArray = [NSArrayarrayWithObjects:@"2.0", @"2.3", @"3.0",@"4.0", nil];
NSNumber *sum = [testArrayvalueForKeyPath:@"@sum.floatValue"]
NSNumber *avg= [testArray valueForKeyPath:@"@avg.floatValue"];

3.數(shù)組中替換(例子)

我想要在NSMutableArray替換一個數(shù)組對象间狂,從_alertsArray獲取了oldArray蜒简,然后修改值藐鹤,用newArray替換oldArray施掏,但是沒實現(xiàn)傍睹。

 NSArray *oldArray=(NSArray*)[_alertsArray objectAtIndex:[indexPath row]];
    NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];
    [newArray replaceObjectAtIndex:3 withObject:@"YES"];
 [_alertsArray replaceObjectAtIndex:[indexPath row] withObject:newArray];

解決辦法

 NSMutableArray *newArray = [_alertsArray mutableCopy];
    [newArray replaceObjectAtIndex:3 withObject:@"YES"];
    _alertsArray = newArray;

4.textfield 限定字數(shù),適用于中英文混合(kMaxLength最大字數(shù))

  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
                                                    name:@"UITextFieldTextDidChangeNotification"
                                                  object:_PlanText];

-(void)textFiledEditChanged:(NSNotification *)obj{
    UITextField *textField = (UITextField *)obj.object;
    
    NSString *toBeString = textField.text;
    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 鍵盤輸入模式
    if ([lang isEqualToString:@"zh-Hans"]) { // 簡體中文輸入憔杨,包括簡體拼音趁啸,健體五筆巨缘,簡體手寫
        UITextRange *selectedRange = [textField markedTextRange];
        //獲取高亮部分
        UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
        // 沒有高亮選擇的字尿赚,則對已輸入的文字進行字數(shù)統(tǒng)計和限制
        if (!position) {
            if (toBeString.length > kMaxLength) {
                textField.text = [toBeString substringToIndex:kMaxLength];
                [MBProgressHUD showInfoMessage:@"只能可以輸入12個字"];
            }
        }
        // 有高亮選擇的字符串买决,則暫不對文字進行統(tǒng)計和限制
        else{
            
        }
    }
    // 中文輸入法以外的直接對其統(tǒng)計限制即可,不考慮其他語種情況
    else{
        if (toBeString.length > kMaxLength) {
            textField.text = [toBeString substringToIndex:kMaxLength];
        }
    }
}


5.數(shù)組去重

1.利用NSDictionary的AllKeys(AllValues)方法

可以將NSArray中的元素存入一個字典吼畏,然后利用AllKeys或者AllValues取得字典的所有鍵或值督赤,這些鍵或值都是去重的。
示例代碼:

  NSArray *arr = @[@111,@222,@111];
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    for (NSNumber *number in arr) {
        [dict setObject:number forKey:number];
    }
    NSLog(@"%@",[dict allValues]);
2013-05-21 12:03:49.449 test1[4377:c07] (
    111,
    222
)
2.利用NSSet的AllObjects方法

這種方法更快泻蚊,利用NSSet不會添加重復元素的特性躲舌。不過去重的數(shù)組沒有進行排序,如果需要排序性雄,可以使用NSSortDescriptor類没卸。
示例代碼:

 NSArray *arr = @[@111,@222,@111];
    NSSet *set = [NSSet setWithArray:arr];
    NSLog(@"%@",[set allObjects]);
2013-05-21 12:06:26.508 test1[4547:c07] (
    111,
    222
)
3.排序的去重

很多時候可能會遇到需要去除NSArray重復的元素羹奉,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有時候數(shù)組元素的順序會
打亂约计。于是換了另外一種方法如下:

  NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
    for (unsigned i = 0; i < [nameArray count]; i++){
        if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){
            [categoryArray addObject:[nameArray objectAtIndex:i]];
        }
        
    }

6.解決UICollectionView的Cell復用引起的布局混亂問題

1. 首先創(chuàng)建一個可變數(shù)組诀拭,用來存放Cell的唯一標示符
// 用來存放Cell的唯一標示符
@property (nonatomic, strong) NSMutableDictionary *cellDic;
#warning 別忘了初始化喲
 self.cellDic = [[NSMutableDictionary alloc] init];
2. 在cellForItemAtIndexPath:這個方法中作相應的一些處理即可,代碼如下
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // 每次先從字典中根據(jù)IndexPath取出唯一標識符
    NSString *identifier = [_cellDic objectForKey:[NSString stringWithFormat:@"%@", indexPath]];
    // 如果取出的唯一標示符不存在煤蚌,則初始化唯一標示符耕挨,并將其存入字典中,對應唯一標示符注冊Cell
    if (identifier == nil) {
        identifier = [NSString stringWithFormat:@"%@%@", DayCell, [NSString stringWithFormat:@"%@", indexPath]];
        [_cellDic setValue:identifier forKey:[NSString stringWithFormat:@"%@", indexPath]];
        // 注冊Cell
        [self.collectionView registerClass:[CalendarCollectionViewCell class]  forCellWithReuseIdentifier:identifier];
    }

    CalendarCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

// 此處可以對Cell做你想做的操作了...

    return cell;
}

7.關于UIView的autoresizingMask屬性的研究

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

UIViewAutoresizingNone就是不自動調(diào)整尉桩。
UIViewAutoresizingFlexibleLeftMargin 自動調(diào)整與superView左邊的距離筒占,保證與superView右邊的距離不變。
UIViewAutoresizingFlexibleRightMargin 自動調(diào)整與superView的右邊距離蜘犁,保證與superView左邊的距離不變翰苫。
UIViewAutoresizingFlexibleTopMargin 自動調(diào)整與superView頂部的距離,保證與superView底部的距離不變这橙。
UIViewAutoresizingFlexibleBottomMargin 自動調(diào)整與superView底部的距離奏窑,也就是說,與superView頂部的距離不變屈扎。
UIViewAutoresizingFlexibleWidth 自動調(diào)整自己的寬度埃唯,保證與superView左邊和右邊的距離不變。
UIViewAutoresizingFlexibleHeight 自動調(diào)整自己的高度助隧,保證與superView頂部和底部的距離不變筑凫。
UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleRightMargin 自動調(diào)整與superView左邊的距離滑沧,保證與左邊的距離和右邊的距離和原來距左邊和右邊的距離的比例不變并村。比如原來距離為20,30滓技,調(diào)整后的距離應為68哩牍,102,即68/20=102/30令漂。
其它的組合類似膝昆。

最后送上一波不錯的三方庫

1.在用戶第一次使用app時候通常會遇到新功能引導頁面!,在這里小編給大家介紹另外一種通過添加“指導標記”到界面來讓用戶快速熟悉你的APP第三方庫!(http://t.cn/RU4SBqo) 一共有5種不同的樣式哦~希望可以給大家做項目時候帶來一些靈感
2.一個app往往有很多界面,而界面之間的跳轉(zhuǎn)也就是對應控制器的跳轉(zhuǎn),控制器的跳轉(zhuǎn)一般有兩種情況 push 或者 modal,push 和 modal 的默認效果是系統(tǒng)提供的,但也可以自定義.有興趣了解一下自定義的童鞋可以看這篇,iOS動畫指南 - 6.可以很酷的轉(zhuǎn)場動畫.
3.一行代碼快速集成tableView上頭部視圖縮放圖片叠必,并且不會占用tableView的頭部視圖荚孵,無侵入性,全用runtime實現(xiàn)的纬朝。http://bbs.520it.com/forum.php?mod=viewthread&tid=1689&page=1&extra=#pid14886
4.Self-Manager 源于我們團隊內(nèi)部的黑話收叶,“誒?你剛去的創(chuàng)業(yè)公司有幾個 iOS 開發(fā)肮部痢判没?” “就我一個” “靠蜓萄,你這是 Self-Manager 啊”http://blog.sunnyxx.com/2015/12/19/self-manager-pattern-in-ios/
最近會不斷推出一些輪子,這次寫了一個控件澄峰,類似QQ表情鍵盤嫉沽,鍵盤布局,根據(jù)coderwhy提供的思路搭建出來的俏竞。http://bbs.520it.com/forum.php?mod=viewthread&tid=1787
一個app往往有很多界面,而界面之間的跳轉(zhuǎn)也就是對應控制器的跳轉(zhuǎn),控制器的跳轉(zhuǎn)一般有兩種情況 push 或者 modal,push 和 modal 的默認效果是系統(tǒng)提供的,但也可以自定義.有興趣了解一下自定義的童鞋可以看這篇,iOS動畫指南 - 6.可以很酷的轉(zhuǎn)場動畫.
5.判斷版本是否升級https://github.com/ArtSabintsev/Harpy
6.連不上網(wǎng),tableview小游戲https://github.com/dasdom/BreakOutToRefresh
7.用戶指導,按步驟操作https://github.com/ephread/Instructions
8.用戶習慣操作三十天連續(xù)使用圖標變換https://github.com/Ramotion/adaptive-tab-bar
9.YYKit 是一組龐大绸硕、功能豐富的 iOS 組件https://github.com/ibireme/YYKit
10.越來越多的應用為每一個 VC 設置單獨的導航條,而不是之前那樣使用一個全局統(tǒng)一的導航條胞此,因為不同的 VC 有不同的視覺樣式臣咖,前一個是藍色的,后一個也許要做成紅色漱牵、透明夺蛇,或者干脆沒有導航條。https://github.com/rickytan/RTRootNavigationController

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酣胀,一起剝皮案震驚了整個濱河市刁赦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闻镶,老刑警劉巖甚脉,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铆农,居然都是意外死亡牺氨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門墩剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猴凹,“玉大人,你說我怎么就攤上這事岭皂〗荐” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵爷绘,是天一觀的道長书劝。 經(jīng)常有香客問我,道長土至,這世上最難降的妖魔是什么购对? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮陶因,結果婚禮上骡苞,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好烙如,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布么抗。 她就那樣靜靜地躺著,像睡著了一般亚铁。 火紅的嫁衣襯著肌膚如雪蝇刀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天徘溢,我揣著相機與錄音吞琐,去河邊找鬼。 笑死然爆,一個胖子當著我的面吹牛站粟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播曾雕,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奴烙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剖张?” 一聲冷哼從身側響起切诀,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搔弄,沒想到半個月后幅虑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡顾犹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年倒庵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炫刷。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡擎宝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柬唯,到底是詐尸還是另有隱情认臊,我是刑警寧澤圃庭,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布锄奢,位于F島的核電站,受9級特大地震影響剧腻,放射性物質(zhì)發(fā)生泄漏拘央。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一书在、第九天 我趴在偏房一處隱蔽的房頂上張望灰伟。 院中可真熱鬧,春花似錦、人聲如沸栏账。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挡爵。三九已至竖般,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茶鹃,已是汗流浹背涣雕。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闭翩,地道東北人挣郭。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像疗韵,于是被迫代替她去往敵國和親兑障。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.尺寸適配1.原因 iOS7中所有導航欄都為半透明蕉汪,導航欄(height=44)和狀態(tài)欄(height=20)不...
    LZM輪回閱讀 6,116評論 1 4
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,662評論 1 9
  • { 11旺垒、核心動畫 需要簽協(xié)議,但是系統(tǒng)幫簽好 一肤无、CABasicAnimation 1先蒋、創(chuàng)建基礎動畫對象 CAB...
    CYC666閱讀 1,545評論 2 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 上傳圖片或者文件的時候需要判斷文件類型,一些新手直接就根據(jù)文件后綴來判斷了宛渐,這是錯誤的竞漾。我們應根據(jù)文件頭查看文件類...
    Fa1se003閱讀 893評論 0 2