Bowen的阿碼小伙伴
這是一個以Xcode進行IOS APP開發的學習心得記錄的部落格。本部落格記錄著筆者從學習開始以來,遇到過並且也覺得值得被記錄下來的問題,相信這些問題及解決方式,可以提供初入這個領域的朋友一些幫助。這些問題大大小小,包括元件的使用、上架app被reject、如何整合app(連線web server進行request等)。筆者撰寫文章時,會盡量以新手的角度去撰寫,避免出現過於艱深,或是讓你每個字都懂,組合起來卻不懂的窘境。希望透過這個部落格可以跟各位朋友一起相互成長。
2018年4月10日 星期二
2014年10月14日 星期二
使用php及mysql使app具備連線網路資料庫(web database)的能力 (四)-AFNetworking的更新
首先,由於AFNetworking中的AFHTTPClient class已經被取消了。改由使用AFHTTPRequestOperationManager 這個class。作法一樣,請見下述程式碼。
- (IBAction)signUpBtn:(id)sender { | |
//將鍵盤縮回 | |
[_userIDTF resignFirstResponder]; | |
[_passwordTF resignFirstResponder]; | |
//判斷基本的認證結果 | |
if ([self validateAccount:_userIDTF.text] && [self validatePassword:_passwordTF.text]) { | |
//啟動一個hud | |
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; | |
//設定hud的顯示文字 | |
[hud setLabelText:@"connecting"]; | |
//取得userID及password | |
NSString *userID = _userIDTF.text; | |
NSString *password = _passwordTF.text; | |
//設定伺服器的根目錄 | |
NSURL *hostRootURL = [NSURL URLWithString:ServerApiURL]; | |
//設定POST的內容 | |
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"signUp", @"cmd", userID, @"userID", password, @"password", nil]; | |
//產生控制request的物件 | |
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc]initWithBaseURL:hostRootURL]; | |
//POST | |
[manager POST:@"api.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { | |
//request成功之後要做的事情 | |
//輸出response | |
NSLog(@"response:%@",responseObject); | |
NSDictionary *json = responseObject; | |
//取的api的key值,並輸出 | |
NSDictionary *apiResponse = [json objectForKey:@"api"]; | |
NSLog(@"apiResponse:%@",apiResponse); | |
//判斷signUp的key值是否等於success | |
NSString *result = [apiResponse objectForKey:@"signUp"]; | |
NSLog(@"result:%@",result); | |
if ([result isEqualToString:@"success"]) { | |
//顯示註冊成功 | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"success.png"]]; | |
[_statusLB setText:@"Status:sign up successed"]; | |
}else { | |
//顯示註冊失敗 | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"signUpFail.png"]]; | |
[_statusLB setText:@"Status:sign up fail"]; | |
} | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { | |
//request失敗要做的事情 | |
NSLog(@"request error:%@",error); | |
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:5]; | |
[imageView setImage:[UIImage imageNamed:@"connectError.png"]]; | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
}]; | |
}else { | |
//基本認證失敗 | |
[_statusLB setText:@"validate fail"]; | |
[MBProgressHUD hideHUDForView:self.view animated:YES]; | |
} | |
} |
各位可以發現,除了AFHTTPClient被AFHTTPRequestOperationManager取代,並且宣告跟方法略有不同之外,其他是一模一樣的。
另外signIn的部份,就由讀者自行修改練習了。
2013年6月12日 星期三
Xcode 5 的新玩意 - UnitTest的進化 Xcode Test(XCT)
UnitTest顧名思義就是單元測試,意思是說把每個你撰寫的功能,個別做測試,當你的測試都沒有問題時,表示這些單元是處於絕對完成的狀態。之後再把這些個別的單元組合起來,完成一個較大的功能。像堆積木一樣,一步一步組成最後的app。這麼做的好處是,我們確保了每一個小步驟都是沒有問題的,因此當問題出現時,我們可以肯定不會是裡面的細項環節有錯誤。因此能夠幫助你節省debug的時間還有力氣。沒有在用這個功能的朋友,可以考慮加入你的coding流程。這個概念在建構大型程式是非常重要的。不過也是只有在大型程式中,才能凸顯其重要性。那麼接下來就來看看他到底多了什麼功能。
2013年4月30日 星期二
使用php及mysql使app具備連線網路資料庫(web database)的能力 (三) - 撰寫 app連線 php
前面兩篇使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫及使用php及mysql使app具備連線網路資料庫(web database)的能力 (二) - 撰寫 php以 mysql管理資料庫。我們建置了mysql並且知道如何撰寫php去存取mysql。現在,終於可以開始撰寫app的部份了。
本篇會撰寫一個簡單的登入頁面,能夠進行註冊,以及登入,並會顯示註冊及登入成功或失敗。
![]() | ![]() | ![]() |
要達成上述的功能,需要進行http request。雖說Objective-C本身就有提供完成這類工作的方法,但是使用起來太過繁雜,不容易使用。而網路上有許多open source提供了這方面的功能,筆者在此使用 AFNetworking來完成這部份的工作。因此,你必須先到這裡下載這個開放原始碼,稍後會在app中使用到。下載完成後,可以開始撰寫程式碼了!
2013年4月21日 星期日
使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫
前言 - 使app具備連線資料庫的方法
本系列文章是使用 php及 mysql 令 app具備連線網路資料庫能力的學習心得。由於 ios sdk並沒有直接連線資料庫的 library能夠使用,因此,現今大部分的作法是用 webView去 request網頁,再經由網頁連線 database的方式,達成連線資料庫的功能。以筆者使用的方式為範例,就如下圖所示:
當然還有其他的如 asp.net等,但是由於 php不用付費,所以筆者選擇使用 php來當做中間的橋樑。本系列文章,分為三個主題:建構資料庫、撰寫 php連線資料庫以及撰寫 app連線 php。以下就開始第一個部分。
使用php及mysql使app具備連線網路資料庫(web database)的能力 (二) - 撰寫 php以 mysql管理資料庫
在上一篇使用php及mysql使app具備連線網路資料庫(web database)的能力 (一) - 建構資料庫,我們完成了資料庫的建置。本篇會針對如何以 php連線資料庫,進行查詢及新增資料。如果你是第一次接觸 php,可以到 codecademy這個互動式教學網站看看 php相關的入門課程,大約幾小時就能對 php有個大概的了解。
2013年2月21日 星期四
使用Xcode 的source control 做版本控制 (2) - Branch
延續上一篇使用Xcode 的source control 做版本控制 (1),本篇會針對其中一項功能Branch 做說明。當在設計app時,可能會面臨一種情況,想法的分歧。比如當你切換到另一個view 時,這個view 有一個主要風格A,但是有另外一種風格B也不錯,因此而讓你舉棋不定。此時可以使用branch 功能,為另外一種風格做一個分歧。因此你的app 會分為A 走向與B 走向。那麼該如何設定分歧,以下就針對此功能做介紹。