|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有一些像NSCopying的接口(经@李禹龙提醒应该叫协议)不是特别用到开始不用了解NSObject创建对象的时候用+(id)alloc方法创建后需要init方法初始化任意往问任何人,他们城市告知你WWDC2014是最近几年来最为冲动的回想。全部年夜会没有公布任何新硬件,它是一次史无前例的软件开辟者盛宴!
仅是iOS8和OSXYosemite的公布就可以让2014成为苹果平台划时期的一年,加上Extension,Continuity,SpriteKit改善,iOSSceneKit,Metal,HealthKit,LocalAuthentication和全新的照片框架。更不必说,Xcode和InterfaceBuilder的分明变动,从头计划的iTunesConnect,TestFlight,溃散呈报和CloudKit。固然另有ohyeah-Swift。
更棒的是?苹果抓紧了她的保密协议,也就是说我们能够如今就公然会商这些极新的玩具!
这周,我们将扒开iOS8的云雾,切磋一些一切人都应当晓得新API。从如今入手下手NSHipster讲次要利用Swift写样历代吗。炎天停止之前,我们但愿能将全体的现存代码转换为Swift,而且供应能够切换言语的选项。 NSProcessInfo-isOperatingSystemAtLeastVersion
健忘[[UIDevicecurrentDevice]systemVersion]和NSFoundationVersionNumber吧,如今能够用NSProcessInfo-isOperatingSystemAtLeastVersion来断定体系版本。- importFoundationletyosemite=NSOperatingSystemVersion(majorVersion:10,minorVersion:10,patchVersion:0)NSProcessInfo().isOperatingSystemAtLeastVersion(yosemite)//false
复制代码 值得注重的是,在做兼容性测试的时分仍是应当利用SomeClass.class或respondsToSelector:。Swift和C中的编译器宏能够用来依据分歧天生设置和方针来选择代码。
新的NSFormatter子类
Foundation中严峻缺掉的一项功效就是不克不及处置分量和长度单元转换。在iOS8和OSXYosemite中,引进了三个新类NSEnergyFormatter,NSMassFormatter和NSLengthFormatter来填补这一缺掉。这使得NSFormatter子类的数目翻了一倍,之前只要NSNumberFormatter,NSDateFormatter和NSByteCountFormatter。 固然这些都是Foundation的子类,可是它们次要都是在HealthKit傍边利用。
NSEnergyFormatter
NSEnergyFormatter利用焦作为能量的原始单元,当处置安康信息时,则利用卡.- letenergyFormatter=NSEnergyFormatter()energyFormatter.forFoodEnergyUse=trueletjoules=10_000.0println(energyFormatter.stringFromJoules(joules))//"2.39Cal"
复制代码 NSMassFormatter
固然质量是物资存在的基础单元,在HealthKit中,它次要指的是身材分量.- letmassFormatter=NSMassFormatter()letkilograms=60.0println(massFormatter.stringFromKilograms(kilograms))//"132lb"
复制代码 NSLengthFormatter
NSFormatter的最初一个新子类是NSLengthFormatter.我们能够把它设想为MKDistanceFormatter的增强版。- letlengthFormatter=NSLengthFormatter()letmeters=5_000.0println(lengthFormatter.stringFromMeters(meters))//"3.107mi"
复制代码 CMPedometer
沿着iOS8的安康线路,CMStepCounter被从头计划了.CMPedometer作为它的改进版本不但能够立即猎取团圆的点数据,而且能够同时跟踪脚步和间隔,乃至盘算统共爬了几级楼梯。
M7芯片真是功效壮大.- importCoreMotionletlengthFormatter=NSLengthFormatter()letpedometer=CMPedometer()pedometer.startPedometerUpdatesFromDate(NSDate(),withHandler:{data,errorinif!error{println("StepsTaken:(data.numberOfSteps)")letdistance=data.distance.doubleValueprintln("Distance:(lengthFormatter.stringFromMeters(distance))")lettime=data.endDate.timeIntervalSinceDate(data.startDate)letspeed=distance/timeprintln("Speed:(lengthFormatter.stringFromMeters(speed))/s")}})
复制代码 CMAltimeter
在撑持的设备上,CMAltimeter可让CMPedometer的floorsAscended,floorsDescended数据加倍精准:- importCoreMotionletaltimeter=CMAltimeter()ifCMAltimeter.isRelativeAltitudeAvailable(){altimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.mainQueue(),withHandler:{data,errorinif!error{println("RelativeAltitude:(data.relativeAltitude)")}})}
复制代码 CLFloor
CLFloor的引进展现了苹果进军室内导航的雄伟企图,楼层信息将饰演侧重要的脚色。- importCoreLocationclassLocationManagerDelegate:NSObject,CLLocationManagerDelegate{funclocationManager(manager:CLLocationManager!,didUpdateLocationslocations:AnyObject[]!){letlocation:CLLocation?=locations[0]as?CLLocationifletfloor:CLFloor?=location?.floor{println("CurrentFloor:(floor?.level)")}}}letmanager=CLLocationManager()manager.delegate=LocationManagerDelegate()manager.startUpdatingLocation()
复制代码 HKStatistics
作为一个框架,HealthKit包括着大批的子类和常量。要想全体了解,HKStatistics是一个很好的入手下手。
HealthKit办理着一切的心理信息,比方:心率,卡路里摄取量,血氧等等,而且经由过程一致的API聚合在一同。
上面这个例子演示了怎样从一天的一连数据中,发掘和猎取独自的数据:- importHealthKitletcollection:HKStatisticsCollection?=...letstatistics:HKStatistics?=collection!.statisticsForDate(NSDate())foritem:AnyObjectinstatistics!.sources{ifletsource=itemas?HKSource{ifletquantity:HKQuantity=statistics!.sumQuantityForSource(source){ifquantity.isCompatibleWithUnit(HKUnit.gramUnitWithMetricPrefix(.Kilo)){letmassFormatter=NSMassFormatter()letkilograms=quantity.doubleValueForUnit(HKUnit.gramUnitWithMetricPrefix(.Kilo))println(massFormatter.stringFromKilograms(kilograms))}ifquantity.isCompatibleWithUnit(HKUnit.meterUnit()){letlengthFormatter=NSLengthFormatter()letmeters=quantity.doubleValueForUnit(HKUnit.meterUnit())println(lengthFormatter.stringFromMeters(meters))}ifquantity.isCompatibleWithUnit(HKUnit.jouleUnit()){letenergyFormatter=NSEnergyFormatter()letjoules=quantity.doubleValueForUnit(HKUnit.jouleUnit())println(energyFormatter.stringFromJoules(joules))}}}}
复制代码 NSHipster将会在将来切磋更多的HealthKit,敬请存眷!
NSStream+getStreamsToHostWithName
在很多方面,WWDC2014也是苹果查漏补遗的一年,好比给NSStream增加了新的initializer(不再用挪用CFStreamCreatePairWithSocketToHost了),这就是:+[NSStreamgetStreamsToHostWithName:port:inputStream:outputStream:]- varinputStream:NSInputStream?varoutputStream:NSOutputStream?NSStream.getStreamsToHostWithName(hostname:"nshipster.com",port:5432,inputStream:&inputStream,outputStream:&outputStream)
复制代码 NSString-localizedCaseInsensitiveContainsString
这又是一个NSString小而有用的补葺:
[code]letstring:NSString="Caf |
|