· 概况:我要怎样...
o ... 找到设备o 位置?
o ... 感应动作?
o ... 感应设备o 方位?
o ... 独特地定义设备o ?
o ... 确定程序是在iPhone上还是在iPod 上运行?
o ... 从语法上分析XML?
· 联系数据:我要怎样...
o ... 管理地址簿的联系数据?
· 日期,· 时间,· 数字:我要怎样...
o ... 获得当前日期和时间?
o ... 格式化日期和数字?
o ... 给出我的应用程序的已运行时间?
· 文件夹管理:我要怎样...
o ... 为局部区域编写信息?
o ... 写入SQLite 数据库?
o ... 捆绑SQLite数据库和我的应用程序?
o ... 从一个网站显示数据?
· 计时器:我要怎样...
o ... 设置一个计时器?
· 优先权与设置项目:我要怎样...
o ... 在设置项目中保存我的应用程序的优先权?
o ... 读取我的应用程序的优先权?
o ... 确定吧应用程序优先权放在那里?
概况
我要怎样找到设备位置
使用Core Location(核心位置)框架,创建一个CLLocationManager用你的应用程序的另一个对象作为代表举例说明。这个代表应当实现 locationManager:didUpdateToLocation:fromLocation:。然后给位置管理发送 astartUpdatingLocation 消息来启动它。位置管理使用CLLocationobjects调用代表方法,其中包括了地理经纬坐标, 以及测量数据的高度和精度。
我要怎样感应动作?
使用共享的 UIAccelerometer对象,具体指定一个更新间隔期,在应用程序中设定对象中的一个作为它的代表。这个对象应当实现 accelerometer:didAccelerate:。这个代表方法与UIAcceleration对象一起被调用,包括X,Y,Z轴的加速度感 应,它们是作为由重力导致的一般加速度因素来测量的。AccelerometerGraph演示怎样使用加速度感应器。
我要怎样感应设备方位?
使用UIDevice类的定位方法来找到设备的物理方位(纵向,颠倒纵向,左转横 向,右转横向,平面向上,平面向下)。记住这个物理方向并不必与由UIViewController类定义的当前界面方向一致。
要得到低层的设 备物理方向(即基于角度),使用UIAccelerometer和UIAcceleration类来获得X,Y还有Z轴的值。然后,你使用这些值提取重力 向量。参考 GLGravity示例应用程序。
我要怎样独特地定义设备?
使用UIDevice类来为当前设备 获得共享设备示例。然后,阅读uniqueIdentifier属性值,这是一个由各种硬件标识符构成的散列值。
我要怎样确定程序是在 iPhone上还是在iPod上运行?
使用 UIDevice 类来为当前设备获得共享设备示例。然后,阅读 modelproperty值, 它是一个字符串,就像@"iPhone" 或 @"iPod"。
我要怎样从语法上分析 XML?
要在iPhone OS下,从语法上分析XML,你可以使用NSXMLParser 类。它提供一个事件驱动的Objective C API,你可以用这个从XML文档提取内容。
SeismicXML示例代码演示怎样使用NSXMLParser。
你也可以使用 libxml C库,它提供扩展的,记录详尽的API,这个库支持读取,改变,序列化XML文档。
联系数据
我要怎样管理地址簿的联系数据?
你使用Address Book框架来读写联系数据。你可以使用ABAddressBook 隐含类型来创建记录,转移已有的记录,比较和分类数据,以及其他的操作。参阅 ABPerson Reference,了解更多信息。
日期,时间,以及数字
我要怎样获得当前日期和时间?
要获得当前日期和时间,使用 NSDate 类 ([NSDate date])的 date 方法。你也可以呼叫Core Foundation方法 CFAbsoluteTimeGetCurrent。
我要怎样格式化日期和数字?
Cocoa提供格式程序类,以写入字符串,或从字符串中转换日期和数字。对于日 期来说,NSDateFormatter类提供API以具体制定日期风格(date style),时间风格(time style),现场(locale),时区(time zone),日历(calendar),格式字符串(format string),还有两位年份转换日期(two-digit-year crossover date)。对于数字来说,NSNumberFormatter 类提供API以具体制定分数和整数的数位,十进位和分组的分割器,舍入整数,填充补白, 等等。参阅 Data Formatting Programming Guide for Cocoa
Core Foundation在 CFDateFormatter和CFNumberFormatter APIs提供对等的服务 。
我要怎样给出我的应用程序的已运行时间?
使用type (NSDate *)的保留属性在你的applicationDidFinishLaunching方法保存你的应用程序的开启时间。然后,当你想要知道你的应用程序的已 运行时间的时候,发送一个 timeIntervalSinceNow消息给那个成员变量,选取否定,就像在列表1中展示的一样。 timeIntervalSinceNow 为未来的日期返回正值,为过去的日期返回负值。
列表1: 给出你的应用程序的已运行时间
// at launch (e.g. in applicationDidFinishLaunching:)
self.launchDate = [NSDate date]; // launchDate must be a retained property
// at some future point, determining elapsed time
NSTimeInterval secondsSinceLaunch = -[self.launchDate timeIntervalSinceNow];
文件夹管理
我要怎样为局部区域编写信息?
你可以在你的应用程序的 本地存储区域编写。你通过呼叫基础函数NSSearchPathForDirectoriesInDomains找到路径,参阅 iPhone Application Programming Guide中的"Getting Paths to Application Directories"
我要怎样写入SQLite 数据库?
你 可以用与在其他平台上相同的方式写入SQLite 数据库。主要限制在于你必须为你的数据库选择一个替代位置(参阅“我要怎样为局部区域编写信息?”)。参阅 SQLiteBooks示例代码,获取更多信 息。
我要怎样捆绑SQLite数据库和我的应用程序?
在你的 Xcode项目中添加现有的数据库文件夹。就像你添加其他任何的资源文件夹一样,把它拖入项目的文件夹视图的“Resources”组。收到提示后,确定 你把文件夹添加在了合适的目标(Target)(如果你的项目有超过一个的目标)。Xcode会在你构建自己的项目的时候把文件夹复制到应用程序包中
如 果你的数据库意味着只读属性的话,这就是你所需要做的全部事情。
如果你需要写入你的SQLite数据库,你将需要在你的应用程序启动时,把它复 制到你的应用程序发件箱中的名录簿之一中,比如文档(Documents)
我要怎 样从一个网站显示数据
你使用 UIWebView类从一个网站读取和显示数据。你用 NSURL类和一个特定的URL把一个网站作为目 标,参看列表2。
列表 2: 从一个网站中读取数据
NSURL *url = [NSURL URLWithString:@" http://www.apple.com "];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
计时器
我要怎样设置一个计时器?
有两种API可以用来与计时 器相互运作:如果你在使用Objective-C (Cocoa),基础框架有 NSTimer;如果你在使用核心基础(Core Foundation)来运行回路,有CFRunLoopTimer。这两种API管理相同的机制,而且对象类型是可以互相交换的(参阅"toll- free bridging")。
计时器可以用在一个特定的时间间隔过去后或是未来的这个时刻,计时器也可以启用一次或是以一个固定的间隔重复 使用。重复计时器还可以手动调整下一次的启动时间。