使用者登入

全站搜尋

最新回應

論壇最新主題

論壇最新回覆

會員排行榜

線上使用者

目前共有 0 位註冊使用者33 位訪客 在線上。

How-To - 資料管理 (Data Management)

babyfish0226
babyfish0226 的照片

翻譯作者:adammisko

原始來源:Data Management Coding How-To's

一般

該如何計算出的該裝置的位置 ?
使用CLLocation class 得到高度、高度的垂直精度及相對位置等。
(用以判斷iPhone處於垂直或水平狀態,也就是一般操作上的直拿或橫拿)

該如何偵查動作呢?
登記 UIAccelerometer 通知。當你得到通知訊息時,您可以由UIAcceleration 物件取得有關該事件的相關資料。

該如何檢測裝置的方向?
使用UIDevice class 的定位方法找出裝置的物理方向(比如說人像顛倒,左觀,右景,正面,反面)
注意,此物理方向和由UIViewController 纇別所定義當前的界面方向並不一定是相同的。

要取得裝置的低階物理方向(基於角度的資料),請使用 UIAccelerometer 和 UIAcceleration 纇別來獲得的X、Y和Z軸的值。然後可以利用這些資訊來得到重力的向量資訊。請參考GLGravity範例應用程式。

該如何檢測螢幕的邊界
使用UIScreen 纇別來取得該裝置全螢幕時的矩形邊界。
為你的應用程式設定使用者界面時,使用此物件的屬性能讓您程式內的views取得frame的最佳矩形。

如何辨認裝置?
使用UIDevice纇別得到共享裝置的案例(instance), 然後讀取 uniqueID 屬性(uniqueID是一個由各種不同硬體識別裝置碼所組成的Hash雜湊值)。

如何得知程式正運行在iPhone或是iPodTouch?
使用UIDevice纇別得到共享裝置的案例(instance),然後讀取model屬性值(它是一個字串資料,如@"iPhone "或 @"Pod Touch")。

資料型別和收集

如何解析XML?
在iPhone的操作系統中要解析XML資料時可使用libxml C 函式庫。它提供了對XML檔案的讀取、變化及串聯(serializing)的一個廣泛而詳盡的API文件。

SeismicXML 範例程式碼,它使用自己的輕量Object-C DOM(Document Object Model文件對象模型)和分組流媒體技術封裝 libxml C函式庫。

如何管理通訊錄的聯絡人資料?
使用通訊錄(Address Book)的framework 去讀取和寫入聯絡人資料。你可以建立紀錄、取回、比較或排序現有的資料並使用ABPerson opaque type來執行一些其他的操作。參考 ABPerson Reference 以獲取更多資訊。

日期和時間和數字

如何取得當前的日期和時間
使用NSDate 類別([NSDate date])中的date方法或是呼叫Core Foundation function(核心基礎函數)中的CFAbsoluteTimeGetCurrent 函數。

該如何格式化日期和數字?
使 用NSDateFormatter物件,它允許您設置不同的屬性,如日期樣式,時間樣式,當地時區樣式,日曆,格式字串,和兩位數字的年交叉日期。可參考 資料格式程式設計指南([url=Data%20Formatting%20Programming%20Guide%20for%20Cocoa] Data Formatting Programming Guide for Cocoa[/url])。

如何得知程式的已運行時間?
在 你程式的applicationDidFinishLaunching方法中使用date方法(NSDate 類別 ([NSDatedate])來記錄您應用程式的啟動時間。然後,當您想知道你的應用程式已經運行多少時間則可以再次呼叫date方法來得到當前以及開始 的日期和時間,最後再計算出時間差。

檔案管理

如何在本地端寫入資訊?
您可以將資料寫入到您應用程式的所在儲存位置。您也可以藉由呼叫基礎函數NSSearchPathForDirectoriesInDomains 來找到這個路徑。

如何寫入資料到SQLite資料庫?
就如同您在其他平台所做的方式一樣,而主要的限制是,你必須為您的資料庫選擇一個合適的位置(請參考"How do I write information locally?" (如何在本地端寫入資訊?))

如何從其他網站讀取資料?
你可以使用UIWebView 類別從一個網站讀取一個顯示資資料 。您也可以利用NSURL class指定一個特定的URL做為您web view的來源目標(請見列表1的範例)。

列表1: 從網站讀取資料

NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];

[webView loadRequest:[NSURLRequest requestWithURL:url]];

字串,文字,字體

如何調整文字大小,以適應指定的空間?
有幾種NSString的方法(參考NSString UIKit Additions Reference)可讓您在特定的矩形區域中進行畫字的動作。您還可以透過指定字型、字體大小和截斷樣式來決定您文字想要的顯示結果。

請見在MoveMe 應用程式範例中關於setupNextDisplayString 方法的使用。

定時

如何建立一個定時器?
你 可選擇使用NSTimer類別 或CFRunLoopTimer 類別建立一個定時器物件。一個NSTimer物件要等到一定的時間間隔才會觸發,並開始傳送指定的信息傳遞到指定的物件。例如,你可以建立一個 nNSTimer物件並經過一定的時間間隔後發送消息到一個視窗並讓他更新自己的資料。您可以從 NSTimer Class Reference 取得更多的資料。

CFRunLoopTimer 物件代表了一個指定執行回圈的來源並在未來的一個預先指定的時間進行觸發。定時器可以觸發一次,或連續在固定的時間間隔中不斷的觸發。再連續觸發的過程中您也可以手動調整下一次的觸發間隔時間。請參考 CFRunLoopTimer Reference

偏好和設置

如何儲存我的應用程式的偏好設置?
使用設置包來為您的應用程式提供設定參數的Settings application配置程式。詳情請參閱 iPhone操作系統程式設計指南 "iPhone OS Programming Guide "。

如果你需要在Settings application以外的更多靈活性,在您的程式中可使用NSUserDefaults纇別修改您的參數設定。(請見 User Defaults Programming Topics for Cocoa.)

如何讀取應用程式的偏好設定?
使用NSUserDefaults纇別。見列表2的例子,當你應用程式在啟動時讀一個布林值。

列表2 :在設定中存放一個應用程序的參數值

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[self setMyAppBoolProperty:[defaults boolForKey:MY_BOOL_PREF_KEY]];

// Finish initializing the application
}

欲知詳情,請參閱"iPhone OS Programming Guide"中的'Accessing Your Preferences' 章節及User Defaults Programming Topics for Coco 這兩篇文章。

如何決定在什麼地方放置程式的偏好設定?
就看您應用程式的風格以及想讓使用者可以設置多少選項。你應該考慮在Settings application設定程式中加入應用程式的偏好設定,並讓您的參數只需設定一次後就不需時常更動以提高效率。

使 用設定應用程式對類似有帳號密碼資料且使用者一般很少更改的電子郵件功能來說是相當適合的。如果你的應用程式只有幾個設定選項,或者使用者對這些設定可能 會經常改變,可以考慮讓在主要view的背面提供讓使用者改變配置的選項,就如同iPhone內建的Weather 天氣工具程式的使用一般。

關於設置參數的更詳細指引,請見 iPhone OS Programming Guide 中的 "Application Preferences" 章節。