搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
iOS实战:Swift版.苹果“生态圈”编程卷
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302417743
  • 作      者:
    关东升著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2016
收藏
编辑推荐

  本书是关东升老师针对iOS入门读者精心编写的“iOS实战”四大宝典之一,通过这四本书,真正实现零基础到APP上架,步入移动开发殿堂。
  《iOS实战:入门与提高卷(Swift版)》
  《iOS实战:图形图像、动画和多媒体卷(Swift版)》
  《iOS实战:传感器卷(Swift版)》
  《iOS实战:苹果“生态圈”编程卷(Swift版)》

展开
作者简介

  关东升, 国内知名iOS技术作家,iOS技术顾问,高级培训讲师,移动开发专家。担任51CTO社区iOS技术顾问,精通iOS、Android和Windows Phone及HTML5等移动开发技术。曾先后主持开发大型网络游戏《神农诀》的iOS和Android客户端开发,国家农产品追溯系统的iPad客户端开发,酒店预订系统的iOS客户端开发,金融系统的iOS、Windows Phone 及Android客户端开发。在App Store上发布数款游戏和应用软件,擅长移动平台的应用和游戏类项目开发。长期为中国移动研究院、云南移动、东软、方正科技、大唐电信、中石油、深圳康拓普、上海财富168、天津港务局等企事业单位授课。著有《iOS网络编程与云端应用xx实践》、《iOS传感器应用开发xx实践》、《iOS开发指南——从零基础到App Store上架》、《交互设计的艺术——iOS 7拟物化到扁平化革命》、《Cocos2d-x实战:C++卷》、《Cocos2d-x实战:Lua卷》、《Cocos2d-x实战:工具卷》、《Cocos2d-x实战:JS卷——Cocos2d-JS开发》等专业图书。

展开
内容介绍
  本书是智捷课堂团队编著的“iOS实战”系列图书中的一本,本书系统介绍了苹果产品“生态圈”的相关知识。全书共分为13章,分别介绍了苹果网络编程、CoreData技术、iCloud编程、推送通知、社交网络编程、Newsstand、应用内购买、Passbook、HomeKit、Handoff、定位服务和地图应用开发。书中全部采用基于iOS8的新API。本书适合作为从事iOS应用开发的软件工程师的参考用书,也可以作为计算机科学与技术、软件工程等专业移动开发类课程的教学用书。
展开
精彩书摘
  第3章Core Data数据持久化技术
  Core Data是苹果为OS X和iOS系统应用开发提供的数据持久化技术。它基于高级数据持久化API,它的底层最终是SQLite数据库、二进制文件和内存数据保存,这样开发人员不用再关心数据的存储细节问题,不用再使用SQL语句,不用面对SQLite的C语言函数。
  3.1对象关系映射
  Core Data是一种对象关系映射(Object Relational Mapping,ORM)技术。听说过HibernateHibernate是一个开放源代码的对象关系映射Java EE框架。的人对对象关系映射不会感到陌生,对象关系映射是关系数据模型和对象模型类之间的一个纽带。
  图31对象关系映射
  无论哪一种模型,都是为了描述和构建应用系统。在应用系统中,一个基本的概念是“实体”。“实体”是应用系统中的“人”、“事”和“物”,它们能够在构造关系模型和对象模型中以不同的形态存在。如图31所示,实体在关系模型中代表表的一条数据,该表描述了实体的结构有哪些属性和关系。实体在对象模型中代表类的一个对象,类描述了实体的结构,实体是类的对象。因此,表是与类对应的概念,记录是与对象对应的概念。
  关系模型和对象模型是有区别的,对象模型更加先进,能够描述继承、实现、关联、聚合和组成等复杂的关系,而关系模型只能描述一对一、一对多和多对多的关系。这两种模型之间的不和谐称为“阻抗不匹配”问题,而对象关系映射可以解决“阻抗不匹配”问题。
  3.2Core Data堆栈
  使用Xcode工具,可以很方便地为工程添加Core Data支持。在Xcode的工程模板中,有两个模板(MasterDetail Application和Single View Application模板)可以直接为工程添加Core Data支持,具体方法是创建工程时,选中Use Core Data复选框,如图32所示。
  图32添加Core Data支持
  其他的模板需要自己添加Core Data支持。下面看看通过模板生成的代码,这些代码主要生成在AppDelegate中。AppDelegate.swift中的主要代码如下:
  import UIKit
  import CoreData
  @UIApplicationMain
  class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?
  …
  // MARK: - Core Data 堆栈
  lazy var managedObjectModel: NSManagedObjectModel = {①
  …
  }()
  lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {②
  …
  }()
  lazy var managedObjectContext: NSManagedObjectContext? = {   ③
  …
  }()
  …
  }
  在AppDelegate.swift中,代码第①行定义了NSManagedObjectModel类型的属性,代码第②行定义了NSPersistentStoreCoordinator类型的属性,代码第③行定义了NSManagedObjectContext类型的属性。
  上述属性的类型含义如下所示:
  □NSManagedObjectContext。它是被管理对象上下文(Managed Object Context,MOC)类,在上下文中可以查找、删除和插入对象,然后通过Core Data堆栈同步到持久化对象存储。
  □NSManagedObjectModel。它是被管理对象模型(Managed Object Model,MOM)类,是系统中的“实体”,与数据库中的表等对象对应。
  □NSPersistentStoreCoordinator。它是持久化存储协调器(Persistent Store Coordinator, PSC)类,在持久化对象存储之上提供了一个接口,可以把它考虑成为数据库的连接。
  除了上述3个概念外,还有“持久化对象存储”,它们一起构成了Core Data堆栈。持久化对象存储(Persistent Object Store,POS)执行所有底层的从对象到数据的转换,并负责打开和关闭数据文件。它有3种持久化实现方式: SQLite、二进制文件和内存形式。
  Core Data堆栈如图33所示,有一个或多个被管理对象上下文,它连接到一个持久化存储协调器。一个持久化存储协调器连接到一个或多个持久化对象存储。持久化对象存储与底层存储文件关联。一个持久化存储协调器也可以管理多个被管理对象模型。一个持久化存储协调器就意味着一个Core Data堆栈。通过Core Data堆栈,可以实现数据查询、插入、删除和修改等操作。
  下面看看AppDelegate.swift中的saveContext方法,其代码如下所示:
  func saveContext () {
  if let moc = self.managedObjectContext {
  var error: NSError? = nil
  if moc.hasChanges && !moc.save(&error) {
  NSLog("Unresolved error \(error), \(error!.userInfo)")
  abort()
  }
  }
  }
  图33Core Data堆栈
  当插入、删除和修改数据之后,需要通过该方法保存被管理对象上下文,其中self.managedObjectContext{}语句是保存上下文的核心语句。
  在AppDelegate.swift中,applicationDocumentsDirectory方法的代码如下:
  lazy var applicationDocumentsDirectory: NSURL = {
  let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory,
  inDomains: .UserDomainMask)
  return urls[urls.count-1] as NSURL
  }()
  该方法返回应用程序沙箱Documents目录,它的返回类型是NSURL。
  在AppDelegate.swift中,Core Data堆栈的方法如下:
  //返回被管理对象上下文
  lazy var managedObjectContext: NSManagedObjectContext? = {①
  let coordinator = self.persistentStoreCoordinator②
  if coordinator == nil {
  return nil
  }
  var managedObjectContext = NSManagedObjectContext()③
  managedObjectContext.persistentStoreCoordinator = coordinator④
  return managedObjectContext
  }()
  //返回持久化存储协调器
  lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {⑤
  var coordinator: NSPersistentStoreCoordinator?
  = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)⑥
  let url = self.applicationDocumentsDirectory
  .URLByAppendingPathComponent("xcdatamodeld文件.sqlite")
  var error: NSError? = nil
  var failureReason = "There was an error creating or loading the application's saved data."
  if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType,
  configuration: nil, URL: url, options: nil, error: &error) == nil {⑦
  coordinator = nil
  // 发生错误情况下处理
  let dict = NSMutableDictionary()⑧
  dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved
  data"
  dict[NSLocalizedFailureReasonErrorKey] = failureReason
  dict[NSUnderlyingErrorKey] = error
  error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)⑨
  NSLog("Unresolved error \(error), \(error!.userInfo)")
  abort()⑩
  }
  return coordinator
  }()
  //返回被管理对象模型
  lazy var managedObjectModel: NSManagedObjectModel = {
  let modelURL = NSBundle.mainBundle()
  .URLForResource("HelloWorld", withExtension: "momd")!
  return NSManagedObjectModel(contentsOfURL: modelURL)!
  }()
  上面的3个属性是计算属性,它们的调用顺序如图34所示。
  图34Core Data堆栈的调用顺序
  第①行代码managedObjectContext属性返回MOC对象。第②行代码是调用persistentStoreCoordinator属性获得PSC对象,第③行代码用于实例化MOC对象,第④行代码通过managedObjectContext.persistentStoreCoordinator = coordinator语句设置PSC数据持久化类型。
  第⑤行代码中的persistentStoreCoordinator属性返回PSC对象。第⑥行代码用于实例化PSC对象,第⑦行代码使用addPersistentStoreWithType:configuration:URL:options:error:方法为PSC对象添加新的持久化数据存储。addPersistentStoreWithType参数用于指定存储类型,它的取值可以是下面的3个常量。
  □NSSQLiteStoreType。指数据持久化类型是SQLite数据。
  □NSBinaryStoreType。指数据持久化类型是二进制文件。
  □NSInMemoryStoreType。指数据持久化类型是内存形式。
  如果在代码第⑦行添加新的持久化数据存储失败,则通过代码⑧~⑩行输出错误日志,并终止任务,其中代码第⑧~⑨行是准备NSError对象,代码第⑩行abort()函数是终止任务。
  ……
展开
目录
第1章准备开始
1.1本书结构
1.2本书中的约定
1.2.1实例代码约定
1.2.2图示约定
1.2.3图中手势
1.2.4方法命名约定
1.2.5构造器命名约定
第2章苹果网络
2.1网络结构
2.1.1客户端服务器结构网络
2.1.2对等结构网络
2.2基于Socket的C/S结构网络通信
2.2.1Socket概念
2.2.2Socket编程
2.2.3实例: CFStream实现TCP Socket服务器端
2.2.4实例: NSStream实现TCP Socket客户端
2.3Bonjour服务发现
2.3.1发布服务
2.3.2解析服务
2.3.3查找服务
2.3.4实例: 基于服务发现的Socket通信服务器端
2.3.5实例: 基于服务发现的Socket通信客户端
2.4对等结构网络
2.4.1使用Multipeer Connectivity开发对等结构网络应用
2.4.2实例: P2PGame游戏
本章小结
第3章Core Data数据持久化技术
3.1对象关系映射
3.2Core Data堆栈
3.3建模和生成实体
3.3.1建模
3.3.2生成实体
3.4实例: 采用Core Data实现MyNotes应用
3.4.1采用Core Data分层架构设计
3.4.2查询数据
3.4.3修改数据
本章小结
第4章iCloud编程
4.1苹果云服务——iCloud
4.2键值数据存储
4.2.1键值数据存储编程
4.2.2实例: iCloud键值数据存储
4.3文档存储
4.3.1iCloud存储运行过程
4.3.2实例: iCloud文档存储编程
4.4iCloud Core Data技术
4.4.1实例: iCloud Core Data实现MyNotes应用
4.4.2配置Xcode工程
4.4.3修改持久化存储协调者
4.4.4修改被管理的对象上下文
4.4.5合并iCloud数据
4.4.6更新UI
4.5CloudKit存储编程
4.5.1CloudKit术语
4.5.2iCloud Dashboard
4.5.3实例: CloudKit实现MyNotes应用
本章小结
第5章推送通知
5.1苹果中究竟有多少个“通知”
5.1.1广播通知
5.1.2本地通知
5.1.3推送通知
5.2配置推送通知
5.2.1证书签名请求
5.2.2创建App ID
5.2.3配置App ID支持推送通知
5.2.4生成APNS的SSL证书
5.2.5下载SSL证书
5.2.6为SSL证书导出p12文件
5.3iOS客户端编程
5.3.1代码实现
5.3.2可选择的推送通知
5.4推送服务端编程
5.4.1使用PHP实现推送服务
5.4.2使用Java推送服务
本章小结
第6章社交网络编程
6.1苹果的社交网络
6.1.1设置账户信息
6.1.2社交网络编程API
6.2使用iOS标准界面编写客户端
6.2.1撰写视图控制器SLComposeViewController
6.2.2实例: 新浪微博客户端
6.3编写自己的社交网络客户端
6.3.1编写社交网络客户端应用程序流程
6.3.2实例: 编写新浪微博客户端
本章小结
第7章报刊杂志——Newsstand应用编程
7.1报刊杂志应用
7.2报刊杂志应用编程
7.2.1配置报刊杂志应用
7.2.2使用Newsstand Kit API
7.3实例: 报刊杂志应用
7.3.1实例设计原型
7.3.2实例设计类图
7.3.3初始化杂志界面
7.3.4主动式下载资源
7.3.5后台下载资源
7.3.6断点续传
7.3.7读取杂志内容
本章小结
第8章应用内购买
8.1应用内购买实例设计
8.2搭建应用内购买开发环境
8.2.1添加测试用户
8.2.2创建App ID
8.2.3添加空白应用IAPDemo
8.2.4为IAPDemo应用添加购买项目
8.3内置产品类型应用内购买
8.3.1创建工程
8.3.2初始化处理
8.3.3获得产品信息
8.3.4处理交易结果
8.3.5恢复交易
8.3.6测试应用内购买
8.4服务器产品类型应用内购买
8.4.1工作流程
8.4.2应用内购买iOS客户端
8.4.3PHP服务器端实现
本章小结
第9章Passbook开发
9.1Passbook与Pass
9.1.1Pass的5种风格
9.1.2Pass的内部结构
9.2设计Pass
9.2.1pass.json文件结构
9.2.2Pass类型和字段
9.2.3二维条形码
9.2.4位置与时间
9.2.5本地化
9.2.6图标和图片的使用
9.3创建Pass
9.3.1创建Pass证书
9.3.2数字签名与打包Pass文件
9.4发布Pass
9.4.1Email发布
9.4.2Web网站发布
9.5Pass Kit编程
9.5.1实例: MyPass实例设计与说明
9.5.2配置Xcode工程
9.5.3访问Passbook
9.5.4添加与替换Pass
9.5.5查看Pass详细内容和删除Pass
本章小结
第10章智能家居与HomeKit编程
10.1苹果配件开发
10.2HomeKit智能家居平台
10.3HomeKit开发框架
10.3.1HomeKit术语
10.3.2HomeKitAPI
10.4HomeKit编程
10.4.1实例: Philips Light bulb控制设计与说明
10.4.2配置Xcode工程
10.4.3故事板设计实现
10.4.4创建家庭和房间
10.4.5配件查找和控制
10.4.6实例测试
本章小结
第11章Handoff编程
11.1Handoff技术
11.1.1使用Handoff的要求
11.1.2设置Handoff
11.1.3Handoff工作原理
11.2Handoff编程
11.2.1Handoff API
11.2.2Handoff编程的一般流程
11.3实例: 灯泡控制器
11.3.1实例描述
11.3.2故事板设计实现
11.3.3代码实现
本章小结
第12章定位
12.1获得用户的位置
12.1.1定位服务编程
12.1.2实例: 定位服务
12.1.3距离过滤器和精度
12.1.4启动和停止定位服务
12.1.5获得位置信息
12.1.6关于定位服务的测试
12.2地理信息编码与反编码
12.2.1地理信息反编码
12.2.2实例: 地理信息反编码
12.2.3地理信息编码查询
12.2.4实例: 地理信息编码查询
12.3微定位技术
12.3.1地理围栏
12.3.2iBeacon技术
12.3.3实例: iBeacon技术实现微定位
本章小结
第13章地图应用开发
13.1使用iOS苹果地图
13.1.1显示地图
13.1.2添加标注
13.1.3跟踪用户位置变化
13.2使用程序外地图
本章小结
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证