ios 8新特性

來源:互聯網
上載者:User

隨便去問任何人,他們都會告訴你WWDC2014是近年來最為激動的回憶。 整個大會沒有發布任何新硬體,它是一次史無前例的軟體開發人員盛宴。

僅是iOS 8和OS X Yosemite的發布就能讓2014成為蘋果平台劃時代的一年,加上Extension,Continuity,SpriteKit 改進,iOS SceneKit,Metal,HealthKit,Local Authentication和全新的照片架構。更不用說,Xcode和Interface Builder的明顯改觀,重新設計的iTunes Connect,TestFlight,崩潰報告和CloudKit。當然還有oh yeah-Swift。

更棒的是。蘋果放鬆了她的保密協定,也就是說我們可以現在就公開討論這些嶄新的玩具。

這周,我們將撥開iOS 8的雲霧,探討一些所有人都應該知道新API。

從現在開始NSHipster將主要使用Swift編寫範例代碼。夏天結束之前,我們希望能將全部的現存代碼轉換為Swift,並且提供可以切換語言的選項。 NSProcessInfo -isOperatingSystemAtLeastVersion

忘記[[UIDevice currentDevice] systemVersion]和NSFoundationVersionNumber吧, 現在可以用NSProcessInfo -isOperatingSystemAtLeastVersion來確定系統版本。 Swift

import Foundationlet yosemite = NSOperatingSystemVersion(majorVersion: 10, minorVersion: 10, patchVersion: 0)NSProcessInfo().isOperatingSystemAtLeastVersion(yosemite) // false

值得注意的是,在做相容性測試的時候還是應該使用SomeClass.class或respondsToSelector:。 Swift和C中的編譯器宏可以用來根據不同組建組態和目標來選擇代碼。 新的NSFormatter子類

Foundation中嚴重缺失的一項功能就是不能處理重量和長度單位轉換。在iOS 8和OS X Yosemite中,引進了三個新類NSEnergyFormatter,NSMassFormatter和NSLengthFormatter來彌補這一缺失。

這使得NSFormatter子類的數量翻了一倍, 之前只有NSNumberFormatter,NSDateFormatter和NSByteCountFormatter。

雖然這些都是Foundation的子類,但是它們主要都是在HealthKit當中使用。 NSEnergyFormatter

NSEnergyFormatter使用焦作為能量的原始單位,當處理健康資訊時,則使用卡. Swift

let energyFormatter = NSEnergyFormatter()energyFormatter.forFoodEnergyUse = truelet joules = 10_000.0println(energyFormatter.stringFromJoules(joules)) // "2.39 Cal"
NSMassFormatter

雖然品質是物質存在的基本單位, 在HealthKit中,它主要指的是身體重量. Swift

let massFormatter = NSMassFormatter()let kilograms = 60.0println(massFormatter.stringFromKilograms(kilograms)) // "132 lb"
NSLengthFormatter

NSFormatter的最後一個新子類是NSLengthFormatter. 我們可以把它想象為MKDistanceFormatter的加強版。 Swift

let lengthFormatter = NSLengthFormatter()let meters = 5_000.0println(lengthFormatter.stringFromMeters(meters)) // "3.107 mi"
CMPedometer

沿著iOS 8的健康路線, CMStepCounter被重新設計了. CMPedometer作為它的改良版本不僅可以即時擷取離散的點資料,並且可以同時跟蹤腳步和距離,甚至計算總共爬了多少級樓梯。

M7晶片真是功能強大. Swift

import CoreMotionlet lengthFormatter = NSLengthFormatter()let pedometer = CMPedometer()pedometer.startPedometerUpdatesFromDate(NSDate(), withHandler: { data, error in    if !error {        println("Steps Taken: \(data.numberOfSteps)")        let distance = data.distance.doubleValue        println("Distance: \(lengthFormatter.stringFromMeters(distance))")        let time = data.endDate.timeIntervalSinceDate(data.startDate)        let speed = distance / time        println("Speed: \(lengthFormatter.stringFromMeters(speed)) / s")    }})
CMAltimeter

在支援的裝置上,CMAltimeter可以讓CMPedometer的floorsAscended,floorsDescended資料更加精準: Swift

import CoreMotionlet altimeter = CMAltimeter()if CMAltimeter.isRelativeAltitudeAvailable() {    altimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { data, error in        if !error {            println("Relative Altitude: \(data.relativeAltitude)")        }    })}
CLFloor

CLFloor的引入展示了蘋果進軍室內導航的宏偉計劃,樓層資訊將扮演著重要的角色。 Swift

import CoreLocationclass LocationManagerDelegate: NSObject, CLLocationManagerDelegate {    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) {        let location: CLLocation? = locations[0] as? CLLocation        if let floor: CLFloor? = location?.floor {            println("Current Floor: \(floor?.level)")        }    }}let manager = CLLocationManager()manager.delegate = LocationManagerDelegate()manager.startUpdatingLocation()
HKStatistics

作為一個架構,HealthKit包含著大量的子類和常量。要想全部理解,HKStatistics是一個很好的開始。

HealthKit管理著所有的生理資訊,例如:心率,攝取熱量,血氧等等,並且通過統一的API彙總在一起。

下面這個例子示範了如何從一天的連續資料中,挖掘和擷取單獨的資料: Swift

import HealthKitlet collection: HKStatisticsCollection? = ...let statistics: HKStatistics? = collection!.statisticsForDate(NSDate())for item: AnyObject in statistics!.sources {    if let source = item as? HKSource {        if let quantity: HKQuantity = statistics!.sumQuantityForSource(source) {            if quantity.isCompatibleWithUnit(HKUnit.gramUnitWithMetricPrefix(.Kilo)) {                let massFormatter = NSMassFormatter()                let kilograms = quantity.doubleValueForUnit(HKUnit.gramUnitWithMetricPrefix(.Kilo))                println(massFormatter.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.