在網路還沒有那麼盛行的時候,大家開始接觸寫程式,可能寫出一個按鈕,給按鈕一個功能,可以修改畫面上的內容時,就足夠我們興奮很久了,但現在可能單單是一個按鈕遠遠不夠了,我們開始會想,要怎麼在按下這個按鈕的時候,能夠把消息發給別人看到?
我學iOS開發半年多就有開發完整App的經驗了,但是這樣的App少不了有人負責設計Server的部分,給我提供了API接口來進行數據的交換。
學過iOS的開發後又開始學了人人都有機會接觸的Web端,時間有限的情況下,如果還要學後端的架設、語言和框架的學習,這讓我很不容易在短時間內再變出一個有完整功能的App.
還好,現在已經有越來越多的團隊以提供Server服務作為創業項目了,你也許有聽過FireBase(被Google收購)、也可能聽過接下來要介紹的Parse,如果打算開始嘗試連續的以不同項目嘗試創業,可能小團隊很需要用到這類工具了,讓工程師專心開發前端,這些提供Server的服務,一般創業團隊可能還不容易用到需要收費的程度。
Parse
我以Parse iOS SDK為例子介紹一下。
Parse已經有提供多國語言的文檔,只要跟著文檔就能瞬間做出一個和Server互動的功能。
Pasrse還提供了iOS、OSX、Android、JavaScript等等SDK使用。
因為文檔已經非常清楚,只要跟著「快速入門」走一遍,就能將SDK配置完成。
Parse儲存/查詢功能
通過操作PFObject儲存信息
上圖是Parse提供的數據介面,Class就相當於Table,所以下面操作PFObject中用到ObjectWithClassName:@”PlayerScore”,就是操作PlayerScore這個表了。
想要新增一條數據,把player這個物件當作字典,賦予name和score兩個值,然後通過saveInBackgroundWithBlock等等方法來進行保存,Parse提供了多個保存的方法,看個人編程習慣了,比如我習慣調用數據用Block,直接在調用代碼中寫上調用結果的操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
PFObject *player = [PFObject objectWithClassName:@"PlayerScore"]; player[@"name"] = _nameTextField.text; player[@"score"] = _scoreTextField.text; [player saveInBackgroundWithBlock:^(BOOL success,NSError *error){ if(success){ //成功則清空TextField方便下一筆資料的輸入。 _nameTextField.text = @""; _scoreTextField.text = @""; [SVProgressHUD showSuccessWithStatus:@"保存成功"]; }else{ [SVProgressHUD showErrorWithStatus:@"保存失敗"]; } }]; |
通過操作PFQuery進行查詢信息
Parse提供查詢的方法也非常多,可以根據Key或者Value來進行查詢,比如查詢PlayerScore中name=don的數據:
1 2 |
PFQuery *query = [PFQuery queryWithClassName:@"PlayerScore"]; [query whereKey:@"name" equalTo:@"don"]; |
完成的例子,查詢分數大於100的資料:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
PFQuery *query = [PFQuery queryWithClassName:@"PlayerScore"]; [query whereKey:@"score" greaterThan:@"100"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { NSLog(@"%@",objects); for (PFObject *object in objects) { NSDictionary *playerInfo = @{ @"name":[object objectForKey:@"name"], @"score":[object objectForKey:@"score"] }; [_playerData addObject:playerInfo]; } [self.tableView reloadData]; } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }]; |
如果常常在使用SQLite3、FMDB、mySQL等等數據庫,應該在使用上會很有感覺了,因為這兩種操作就是在對table進行insert/select。
Parse提供的服務不僅僅是這樣,他也同樣能夠管理用戶的級別(一般用戶、管理員、系統管理員之類的),更多的資料可以看看Parse提供的文檔,清楚到不用另外Google了….