iphonedevelopment专题小站

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

转载自www.madhome.org

· 概况:我要怎样...

... 找到设备o 位置?
... 感应动作?
... 感应设备o 方位?
... 独特地定义设备o 
... 确定程序是在iPhone上还是在iPod 上运行?
... 从语法上分析XML?


· 联系数据:我要怎样...
... 管理地址簿的联系数据?

· 日期,· 时间,· 数字:我要怎样...
... 获得当前日期和时间?
... 格式化日期和数字?
... 给出我的应用程序的已运行时间?

· 文件夹管理:我要怎样...
... 为局部区域编写信息?
... 写入SQLite 数据库?
... 捆绑SQLite数据库和我的应用程序?
... 从一个网站显示数据?


· 计时器:我要怎样...
... 设置一个计时器?


· 优先权与设置项目:我要怎样...
... 在设置项目中保存我的应用程序的优先权?
... 读取我的应用程序的优先权?
... 确定吧应用程序优先权放在那里?


概况

我要怎样找到设备位置
使用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")。
计时器可以用在一个特定的时间间隔过去后或是未来的这个时刻,计时器也可以启用一次或是以一个固定的间隔重复使用。重复计时器还可以手动调整下一次的启动时间。

要获得更多细节,参阅 NSTimer Class Reference 和CFRunLoopTimer Reference。

posted on 2010-01-18 17:34  rek  阅读(779)  评论(0编辑  收藏  举报