The Second Edition of iOS 8 App Development Essentials was published on April 15, 2015. The current revision is 2.0. The revision of your copy of the book can be found in the copyright page at the start of the book.
Support for Xcode 6.3 and Swift 1.2
The First Editon of iOS 8 App Development Essentials was based on Xcode 6.2 and Swift 1.1. Apple recently released Xcode 6.3 and Swift 1.2. If you are using Xcode 6.3 with the First Edition of the book a number of the code examples will cause syntax errors due to the changes introduced with Swift 1.2.
If you are using Xcode 6.3 and Swift 1.1 but have the First Edition of iOS 8 App Development Essentials, please take the following steps:
1. The Second Edition of iOS 8 App Development Essentials has been fully updated for Swift 1.2 and Xcode 6.3. Email us at [email protected] with proof of purchase and we will provide you with a copy of the Second Edition in eBook format at no additional cost.
2. Download the version of the sample code which has been updated for Swift 1.2. This can be downloaded using the following link and used as a reference to the changes in the examples for Swift 1.2:
http://www.ebookfrenzy.com/code/iOS8BookSamples_SE.zip
Known issues with revision 1.0
Chapter 56. Subclassing and Extending the iOS 8 Collection View Flow Layout
Due to recent changes in the Swift compiler and SDK, it is now necessary to declare references to self.collectionView as being optional. The following lines of code in this chapter should now read as follows with the self.collectionView references postfixed with a '?':
self.collectionView?.setCollectionViewLayout(myLayout,
animated: true)
self.collectionView?.addGestureRecognizer(pinchRecognizer)
let layout = self.collectionView?.collectionViewLayout
as MyFlowLayout
let pinchedCellPath =
self.collectionView?.indexPathForItemAtPoint(initialPinchPoint)
self.collectionView?.performBatchUpdates({
layout.currentCellPath = nil
layout.currentCellScale = 1.0}, completion:nil)
Known issues with revision 1.0a
47.7 Implementing the didFinishLaunchingWithOptions Method
The code added to the didFinishLaunchingWithOptions method in this section should read as follows:
if let options: NSDictionary = launchOptions {
let remoteNotification = options.objectForKey(
UIApplicationLaunchOptionsRemoteNotificationKey) as?
NSDictionary
if let notification = remoteNotification {
self.application(application,
didReceiveRemoteNotification: notification)
}
}
Known issues with revision 1.0b
30.5 Configuring Master View Items
The following line of code generates a syntax error which reads "UILabel? does not have a member named text":
cell.textLabel.text = siteNames![indexPath.row]
To resolve this issue the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = siteNames![indexPath.row]
93. An iOS 8 Twitter Integration Tutorial using SLRequest
The following lines of code generate syntax errors which reads "UILabel? does not have a member named text" and "UILabel? does not have a member named numberOfLines":
cell.textLabel.text = tweet.objectForKey("text") as NSString
cell.textLabel.numberOfLines = 0
To resolve these issues the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = tweet.objectForKey("text") as NSString
cell.textLabel!.numberOfLines = 0
Chapter 56. Subclassing and Extending the iOS 8 Collection View Flow Layout
Due to recent changes in the Swift compiler and SDK, it is now necessary to declare references to self.collectionView as being optional. The following lines of code in this chapter should now read as follows with the self.collectionView references postfixed with a '?':self.collectionView?.setCollectionViewLayout(myLayout, animated: true) self.collectionView?.addGestureRecognizer(pinchRecognizer) let layout = self.collectionView?.collectionViewLayout as MyFlowLayout let pinchedCellPath = self.collectionView?.indexPathForItemAtPoint(initialPinchPoint) self.collectionView?.performBatchUpdates({ layout.currentCellPath = nil layout.currentCellScale = 1.0}, completion:nil)
Known issues with revision 1.0a
47.7 Implementing the didFinishLaunchingWithOptions Method
The code added to the didFinishLaunchingWithOptions method in this section should read as follows:
if let options: NSDictionary = launchOptions {
let remoteNotification = options.objectForKey(
UIApplicationLaunchOptionsRemoteNotificationKey) as?
NSDictionary
if let notification = remoteNotification {
self.application(application,
didReceiveRemoteNotification: notification)
}
}
Known issues with revision 1.0b
30.5 Configuring Master View Items
The following line of code generates a syntax error which reads "UILabel? does not have a member named text":
cell.textLabel.text = siteNames![indexPath.row]
To resolve this issue the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = siteNames![indexPath.row]
93. An iOS 8 Twitter Integration Tutorial using SLRequest
The following lines of code generate syntax errors which reads "UILabel? does not have a member named text" and "UILabel? does not have a member named numberOfLines":
cell.textLabel.text = tweet.objectForKey("text") as NSString
cell.textLabel.numberOfLines = 0
To resolve these issues the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = tweet.objectForKey("text") as NSString
cell.textLabel!.numberOfLines = 0
47.7 Implementing the didFinishLaunchingWithOptions Method
The code added to the didFinishLaunchingWithOptions method in this section should read as follows:if let options: NSDictionary = launchOptions { let remoteNotification = options.objectForKey( UIApplicationLaunchOptionsRemoteNotificationKey) as? NSDictionary if let notification = remoteNotification { self.application(application, didReceiveRemoteNotification: notification) } }
Known issues with revision 1.0b
30.5 Configuring Master View Items
The following line of code generates a syntax error which reads "UILabel? does not have a member named text":
cell.textLabel.text = siteNames![indexPath.row]
To resolve this issue the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = siteNames![indexPath.row]
93. An iOS 8 Twitter Integration Tutorial using SLRequest
The following lines of code generate syntax errors which reads "UILabel? does not have a member named text" and "UILabel? does not have a member named numberOfLines":
cell.textLabel.text = tweet.objectForKey("text") as NSString
cell.textLabel.numberOfLines = 0
To resolve these issues the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = tweet.objectForKey("text") as NSString
cell.textLabel!.numberOfLines = 0
30.5 Configuring Master View Items
The following line of code generates a syntax error which reads "UILabel? does not have a member named text":cell.textLabel.text = siteNames![indexPath.row]To resolve this issue the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = siteNames![indexPath.row]
93. An iOS 8 Twitter Integration Tutorial using SLRequest
The following lines of code generate syntax errors which reads "UILabel? does not have a member named text" and "UILabel? does not have a member named numberOfLines":cell.textLabel.text = tweet.objectForKey("text") as NSString cell.textLabel.numberOfLines = 0To resolve these issues the textLabel optional should be implicitly unwrapped as follows:
cell.textLabel!.text = tweet.objectForKey("text") as NSString cell.textLabel!.numberOfLines = 0
If you have encountered an error in this book that is not listed above, please let us know by contacting our support team at [email protected].