Object Type Declarations and FeaturesInitializersOptional propertiesReferring to selfDelegating initializersFailable initializersPropertiesMethodsSubscriptsNamespaced Object TypesInstance ReferencesEnumsCase With Fixed ValueCase With Typed ValueEnum InitializersEnum PropertiesEnum MethodsWhy Enums?StructsStruct Initializers, Properties, and MethodsStruct As NamespaceClassesValue Types and Reference TypesSubclass and SuperclassClass InitializersRequired initializersSurprises from CocoaClass DeinitializerClass Properties and MethodsPolymorphismCastingType ReferenceProtocolsWhy Protocols?Protocol Type Testing and CastingDeclaring a ProtocolOptional Protocol MembersClass ProtocolImplicitly Required InitializersLiteral ConvertiblesGenericsGeneric DeclarationsType ConstraintsExplicit SpecializationWhere ClausesExtensionsUmbrella TypesAnyObjectSuppressing type checkingObject identityAnyClassAnyCollection TypesArrayArray casting and type testingArray comparisonArrays are value typesArray subscriptingNested arraysBasic array properties and methodsArray enumeration and transformationSwift Array and Objective-C NSArrayDictionaryBasic dictionary properties and enumerationSwift Dictionary and Objective-C NSDictionarySet