Initial commit
This commit is contained in:
@@ -0,0 +1,573 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
6B02216222BA0EF500AEB14D /* InsertionSortViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B02216122BA0EF500AEB14D /* InsertionSortViewController.swift */; };
|
||||
6B02216422BA11D500AEB14D /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B02216322BA11D500AEB14D /* Extension.swift */; };
|
||||
6B02216622BA177F00AEB14D /* InsertionSortViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B02216522BA177F00AEB14D /* InsertionSortViewController.xib */; };
|
||||
6B02216822BB7FA800AEB14D /* TopViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B02216722BB7FA800AEB14D /* TopViewController.swift */; };
|
||||
6B02216A22BB824600AEB14D /* TopViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B02216922BB824600AEB14D /* TopViewController.xib */; };
|
||||
6B46555622B6AB0C005202D1 /* MountainsRawData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B46555522B6AB0C005202D1 /* MountainsRawData.swift */; };
|
||||
6B46555822B6AB15005202D1 /* MountainsRawData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B46555722B6AB15005202D1 /* MountainsRawData.swift */; };
|
||||
6B46555A22B6AC83005202D1 /* LabelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B46555922B6AC83005202D1 /* LabelItem.swift */; };
|
||||
6BA3A78222B5515D00AD51ED /* LabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BA3A78122B5515D00AD51ED /* LabelCell.swift */; };
|
||||
6BA3A78422B5516500AD51ED /* LabelCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6BA3A78322B5516500AD51ED /* LabelCell.xib */; };
|
||||
6BA3A78822B5565E00AD51ED /* MountainsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6BA3A78722B5565E00AD51ED /* MountainsViewController.xib */; };
|
||||
6BA3A78E22B55FB000AD51ED /* DiffableDataSources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */; };
|
||||
6BA3A78F22B55FB000AD51ED /* DiffableDataSources.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BA3A79022B55FB000AD51ED /* DifferenceKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */; };
|
||||
6BA3A79122B55FB000AD51ED /* DifferenceKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BA3A79C22B69EDF00AD51ED /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BA3A79B22B69EDF00AD51ED /* AppDelegate.swift */; };
|
||||
6BA3A79E22B69EDF00AD51ED /* MountainsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BA3A79D22B69EDF00AD51ED /* MountainsViewController.swift */; };
|
||||
6BA3A7A022B69EE200AD51ED /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6BA3A79F22B69EE200AD51ED /* Assets.xcassets */; };
|
||||
6BA3A7A322B69EE200AD51ED /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6BA3A7A122B69EE200AD51ED /* Main.storyboard */; };
|
||||
6BA3A7A922B6A04F00AD51ED /* DiffableDataSources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */; };
|
||||
6BA3A7AA22B6A04F00AD51ED /* DiffableDataSources.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BA3A7AB22B6A04F00AD51ED /* DifferenceKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */; };
|
||||
6BA3A7AC22B6A04F00AD51ED /* DifferenceKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
6BB7630722B545240050DC03 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7630622B545240050DC03 /* AppDelegate.swift */; };
|
||||
6BB7630922B545240050DC03 /* MountainsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7630822B545240050DC03 /* MountainsViewController.swift */; };
|
||||
6BB7630E22B545260050DC03 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6BB7630D22B545260050DC03 /* Assets.xcassets */; };
|
||||
6BB7631122B545260050DC03 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6BB7630F22B545260050DC03 /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
6BA3A79222B55FB000AD51ED /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
6BA3A79122B55FB000AD51ED /* DifferenceKit.framework in Embed Frameworks */,
|
||||
6BA3A78F22B55FB000AD51ED /* DiffableDataSources.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6BA3A7AD22B6A05000AD51ED /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
6BA3A7AC22B6A04F00AD51ED /* DifferenceKit.framework in Embed Frameworks */,
|
||||
6BA3A7AA22B6A04F00AD51ED /* DiffableDataSources.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
6B02216122BA0EF500AEB14D /* InsertionSortViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsertionSortViewController.swift; sourceTree = "<group>"; };
|
||||
6B02216322BA11D500AEB14D /* Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extension.swift; sourceTree = "<group>"; };
|
||||
6B02216522BA177F00AEB14D /* InsertionSortViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InsertionSortViewController.xib; sourceTree = "<group>"; };
|
||||
6B02216722BB7FA800AEB14D /* TopViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopViewController.swift; sourceTree = "<group>"; };
|
||||
6B02216922BB824600AEB14D /* TopViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TopViewController.xib; sourceTree = "<group>"; };
|
||||
6B46555522B6AB0C005202D1 /* MountainsRawData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MountainsRawData.swift; sourceTree = SOURCE_ROOT; };
|
||||
6B46555722B6AB15005202D1 /* MountainsRawData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MountainsRawData.swift; sourceTree = SOURCE_ROOT; };
|
||||
6B46555922B6AC83005202D1 /* LabelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelItem.swift; sourceTree = "<group>"; };
|
||||
6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DiffableDataSources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DifferenceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6BA3A78122B5515D00AD51ED /* LabelCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelCell.swift; sourceTree = "<group>"; };
|
||||
6BA3A78322B5516500AD51ED /* LabelCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LabelCell.xib; sourceTree = "<group>"; };
|
||||
6BA3A78722B5565E00AD51ED /* MountainsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MountainsViewController.xib; sourceTree = "<group>"; };
|
||||
6BA3A79922B69EDF00AD51ED /* Example-macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example-macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6BA3A79B22B69EDF00AD51ED /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
6BA3A79D22B69EDF00AD51ED /* MountainsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MountainsViewController.swift; sourceTree = "<group>"; };
|
||||
6BA3A79F22B69EE200AD51ED /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
6BA3A7A222B69EE200AD51ED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
6BA3A7A422B69EE200AD51ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
6BA3A7A522B69EE200AD51ED /* Example_macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Example_macOS.entitlements; sourceTree = "<group>"; };
|
||||
6BB7630322B545240050DC03 /* Example-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6BB7630622B545240050DC03 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
6BB7630822B545240050DC03 /* MountainsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MountainsViewController.swift; sourceTree = "<group>"; };
|
||||
6BB7630D22B545260050DC03 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
6BB7631022B545260050DC03 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
6BB7631222B545260050DC03 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
6BA3A79622B69EDF00AD51ED /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BA3A7AB22B6A04F00AD51ED /* DifferenceKit.framework in Frameworks */,
|
||||
6BA3A7A922B6A04F00AD51ED /* DiffableDataSources.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6BB7630022B545240050DC03 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BA3A79022B55FB000AD51ED /* DifferenceKit.framework in Frameworks */,
|
||||
6BA3A78E22B55FB000AD51ED /* DiffableDataSources.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
6BA3A79A22B69EDF00AD51ED /* Example-macOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BA3A79D22B69EDF00AD51ED /* MountainsViewController.swift */,
|
||||
6B46555922B6AC83005202D1 /* LabelItem.swift */,
|
||||
6B46555722B6AB15005202D1 /* MountainsRawData.swift */,
|
||||
6BA3A79B22B69EDF00AD51ED /* AppDelegate.swift */,
|
||||
6BA3A7A122B69EE200AD51ED /* Main.storyboard */,
|
||||
6BA3A79F22B69EE200AD51ED /* Assets.xcassets */,
|
||||
6BA3A7A422B69EE200AD51ED /* Info.plist */,
|
||||
6BA3A7A522B69EE200AD51ED /* Example_macOS.entitlements */,
|
||||
);
|
||||
path = "Example-macOS";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6BB762FA22B545240050DC03 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BB7630522B545240050DC03 /* Example-iOS */,
|
||||
6BA3A79A22B69EDF00AD51ED /* Example-macOS */,
|
||||
6BB7630422B545240050DC03 /* Products */,
|
||||
6BB7632122B5467B0050DC03 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6BB7630422B545240050DC03 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BB7630322B545240050DC03 /* Example-iOS.app */,
|
||||
6BA3A79922B69EDF00AD51ED /* Example-macOS.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6BB7630522B545240050DC03 /* Example-iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6B02216722BB7FA800AEB14D /* TopViewController.swift */,
|
||||
6B02216922BB824600AEB14D /* TopViewController.xib */,
|
||||
6BB7630822B545240050DC03 /* MountainsViewController.swift */,
|
||||
6BA3A78722B5565E00AD51ED /* MountainsViewController.xib */,
|
||||
6B02216122BA0EF500AEB14D /* InsertionSortViewController.swift */,
|
||||
6B02216522BA177F00AEB14D /* InsertionSortViewController.xib */,
|
||||
6BA3A78122B5515D00AD51ED /* LabelCell.swift */,
|
||||
6BA3A78322B5516500AD51ED /* LabelCell.xib */,
|
||||
6B02216322BA11D500AEB14D /* Extension.swift */,
|
||||
6B46555522B6AB0C005202D1 /* MountainsRawData.swift */,
|
||||
6BB7630622B545240050DC03 /* AppDelegate.swift */,
|
||||
6BB7630D22B545260050DC03 /* Assets.xcassets */,
|
||||
6BB7630F22B545260050DC03 /* LaunchScreen.storyboard */,
|
||||
6BB7631222B545260050DC03 /* Info.plist */,
|
||||
);
|
||||
path = "Example-iOS";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6BB7632122B5467B0050DC03 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6BA3A77B22B549B700AD51ED /* DiffableDataSources.framework */,
|
||||
6BA3A77D22B549B700AD51ED /* DifferenceKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
6BA3A79822B69EDF00AD51ED /* Example-macOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6BA3A7A822B69EE200AD51ED /* Build configuration list for PBXNativeTarget "Example-macOS" */;
|
||||
buildPhases = (
|
||||
6BA3A79522B69EDF00AD51ED /* Sources */,
|
||||
6BA3A79622B69EDF00AD51ED /* Frameworks */,
|
||||
6BA3A79722B69EDF00AD51ED /* Resources */,
|
||||
6BA3A7AD22B6A05000AD51ED /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Example-macOS";
|
||||
productName = "Example-macOS";
|
||||
productReference = 6BA3A79922B69EDF00AD51ED /* Example-macOS.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
6BB7630222B545240050DC03 /* Example-iOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6BB7631522B545260050DC03 /* Build configuration list for PBXNativeTarget "Example-iOS" */;
|
||||
buildPhases = (
|
||||
6BB762FF22B545240050DC03 /* Sources */,
|
||||
6BB7630022B545240050DC03 /* Frameworks */,
|
||||
6BB7630122B545240050DC03 /* Resources */,
|
||||
6BA3A79222B55FB000AD51ED /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Example-iOS";
|
||||
productName = "DiffableDataSourcesExample-iOS";
|
||||
productReference = 6BB7630322B545240050DC03 /* Example-iOS.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
6BB762FB22B545240050DC03 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1020;
|
||||
LastUpgradeCheck = 1020;
|
||||
ORGANIZATIONNAME = "Ryo Aoyama";
|
||||
TargetAttributes = {
|
||||
6BA3A79822B69EDF00AD51ED = {
|
||||
CreatedOnToolsVersion = 10.2.1;
|
||||
};
|
||||
6BB7630222B545240050DC03 = {
|
||||
CreatedOnToolsVersion = 10.2.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 6BB762FE22B545240050DC03 /* Build configuration list for PBXProject "DiffableDataSourcesExamples" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 6BB762FA22B545240050DC03;
|
||||
productRefGroup = 6BB7630422B545240050DC03 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
6BB7630222B545240050DC03 /* Example-iOS */,
|
||||
6BA3A79822B69EDF00AD51ED /* Example-macOS */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
6BA3A79722B69EDF00AD51ED /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BA3A7A022B69EE200AD51ED /* Assets.xcassets in Resources */,
|
||||
6BA3A7A322B69EE200AD51ED /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6BB7630122B545240050DC03 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BA3A78422B5516500AD51ED /* LabelCell.xib in Resources */,
|
||||
6B02216622BA177F00AEB14D /* InsertionSortViewController.xib in Resources */,
|
||||
6B02216A22BB824600AEB14D /* TopViewController.xib in Resources */,
|
||||
6BA3A78822B5565E00AD51ED /* MountainsViewController.xib in Resources */,
|
||||
6BB7631122B545260050DC03 /* LaunchScreen.storyboard in Resources */,
|
||||
6BB7630E22B545260050DC03 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
6BA3A79522B69EDF00AD51ED /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BA3A79E22B69EDF00AD51ED /* MountainsViewController.swift in Sources */,
|
||||
6B46555A22B6AC83005202D1 /* LabelItem.swift in Sources */,
|
||||
6B46555822B6AB15005202D1 /* MountainsRawData.swift in Sources */,
|
||||
6BA3A79C22B69EDF00AD51ED /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6BB762FF22B545240050DC03 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6BB7630922B545240050DC03 /* MountainsViewController.swift in Sources */,
|
||||
6BA3A78222B5515D00AD51ED /* LabelCell.swift in Sources */,
|
||||
6B02216422BA11D500AEB14D /* Extension.swift in Sources */,
|
||||
6B02216222BA0EF500AEB14D /* InsertionSortViewController.swift in Sources */,
|
||||
6BB7630722B545240050DC03 /* AppDelegate.swift in Sources */,
|
||||
6B46555622B6AB0C005202D1 /* MountainsRawData.swift in Sources */,
|
||||
6B02216822BB7FA800AEB14D /* TopViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
6BA3A7A122B69EE200AD51ED /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
6BA3A7A222B69EE200AD51ED /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6BB7630F22B545260050DC03 /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
6BB7631022B545260050DC03 /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
6BA3A7A622B69EE200AD51ED /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "Example-macOS/Example_macOS.entitlements";
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = "Example-macOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ryo.DiffableDataSourcesExample-macOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SDKROOT = macosx;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6BA3A7A722B69EE200AD51ED /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "Example-macOS/Example_macOS.entitlements";
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = "Example-macOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ryo.DiffableDataSourcesExample-macOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SDKROOT = macosx;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
6BB7631322B545260050DC03 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6BB7631422B545260050DC03 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
6BB7631622B545260050DC03 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
GCC_OPTIMIZATION_LEVEL = s;
|
||||
INFOPLIST_FILE = "Example-iOS/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ryo.DiffableDataSourcesExample-iOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TVOS_DEPLOYMENT_TARGET = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6BB7631722B545260050DC03 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = "Example-iOS/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ryo.DiffableDataSourcesExample-iOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TVOS_DEPLOYMENT_TARGET = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
6BA3A7A822B69EE200AD51ED /* Build configuration list for PBXNativeTarget "Example-macOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6BA3A7A622B69EE200AD51ED /* Debug */,
|
||||
6BA3A7A722B69EE200AD51ED /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
6BB762FE22B545240050DC03 /* Build configuration list for PBXProject "DiffableDataSourcesExamples" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6BB7631322B545260050DC03 /* Debug */,
|
||||
6BB7631422B545260050DC03 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
6BB7631522B545260050DC03 /* Build configuration list for PBXNativeTarget "Example-iOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6BB7631622B545260050DC03 /* Debug */,
|
||||
6BB7631722B545260050DC03 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 6BB762FB22B545240050DC03 /* Project object */;
|
||||
}
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:DiffableDataSourcesExample-iOS.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1020"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6BB7630222B545240050DC03"
|
||||
BuildableName = "Example-iOS.app"
|
||||
BlueprintName = "Example-iOS"
|
||||
ReferencedContainer = "container:DiffableDataSourcesExamples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6BB7630222B545240050DC03"
|
||||
BuildableName = "Example-iOS.app"
|
||||
BlueprintName = "Example-iOS"
|
||||
ReferencedContainer = "container:DiffableDataSourcesExamples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6BB7630222B545240050DC03"
|
||||
BuildableName = "Example-iOS.app"
|
||||
BlueprintName = "Example-iOS"
|
||||
ReferencedContainer = "container:DiffableDataSourcesExamples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6BB7630222B545240050DC03"
|
||||
BuildableName = "Example-iOS.app"
|
||||
BlueprintName = "Example-iOS"
|
||||
ReferencedContainer = "container:DiffableDataSourcesExamples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:DiffableDataSourcesExamples.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:../DiffableDataSources.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:../Carthage/Checkouts/DifferenceKit/DifferenceKit.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,17 @@
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
final class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
var window: UIWindow?
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
|
||||
let window = UIWindow()
|
||||
let navigationController = UINavigationController(rootViewController: TopViewController())
|
||||
navigationController.navigationBar.tintColor = .black
|
||||
window.rootViewController = navigationController
|
||||
window.makeKeyAndVisible()
|
||||
self.window = window
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "83.5x83.5",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -0,0 +1,13 @@
|
||||
import UIKit
|
||||
|
||||
extension UITableViewCell {
|
||||
static var name: String {
|
||||
return String(describing: self)
|
||||
}
|
||||
}
|
||||
|
||||
extension UICollectionViewCell {
|
||||
static var name: String {
|
||||
return String(describing: self)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string></string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,172 @@
|
||||
import UIKit
|
||||
import DiffableDataSources
|
||||
|
||||
final class InsertionSortViewController: UIViewController {
|
||||
final class Section: Hashable {
|
||||
var id = UUID()
|
||||
var nodes: [Node]
|
||||
private(set) var isSorted = false
|
||||
private var currentIndex = 1
|
||||
|
||||
init(count: Int) {
|
||||
nodes = (0..<count).map { Node(value: $0, maxValue: count) }.shuffled()
|
||||
}
|
||||
|
||||
func hash(into hasher: inout Hasher) {
|
||||
hasher.combine(id)
|
||||
}
|
||||
|
||||
func sortNext() {
|
||||
guard !isSorted, nodes.count > 1 else {
|
||||
return isSorted = true
|
||||
}
|
||||
|
||||
var index = currentIndex
|
||||
let currentNode = nodes[index]
|
||||
index -= 1
|
||||
|
||||
while index >= 0 && currentNode.value < nodes[index].value {
|
||||
let node = nodes[index]
|
||||
nodes[index] = currentNode
|
||||
nodes[index + 1] = node
|
||||
index -= 1
|
||||
}
|
||||
|
||||
currentIndex += 1
|
||||
|
||||
if currentIndex >= nodes.count {
|
||||
isSorted = true
|
||||
}
|
||||
}
|
||||
|
||||
static func == (lhs: Section, rhs: Section) -> Bool {
|
||||
return lhs.id == rhs.id
|
||||
}
|
||||
}
|
||||
|
||||
struct Node: Hashable {
|
||||
var id = UUID()
|
||||
var value: Int
|
||||
var color: UIColor
|
||||
|
||||
init(value: Int, maxValue: Int) {
|
||||
let hue = CGFloat(value) / CGFloat(maxValue)
|
||||
self.value = value
|
||||
color = UIColor(hue: hue, saturation: 1, brightness: 1, alpha: 1)
|
||||
id = UUID()
|
||||
}
|
||||
|
||||
func hash(into hasher: inout Hasher) {
|
||||
hasher.combine(id)
|
||||
}
|
||||
|
||||
static func == (lhs: Node, rhs: Node) -> Bool {
|
||||
return lhs.id == rhs.id
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private var collectionView: UICollectionView!
|
||||
private var isSorting = false
|
||||
|
||||
let nodeSize = CGSize(width: 16, height: 34)
|
||||
|
||||
private lazy var dataSource = CollectionViewDiffableDataSource<Section, Node>(collectionView: collectionView) { collectionView, indexPath, node in
|
||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: UICollectionViewCell.name, for: indexPath)
|
||||
cell.backgroundColor = node.color
|
||||
return cell
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
title = "Insertion Sort"
|
||||
|
||||
collectionView.delegate = self
|
||||
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: UICollectionViewCell.name)
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(title: nil, style: .plain, target: self, action: #selector(toggleSort))
|
||||
|
||||
updateSortButtonTitle()
|
||||
}
|
||||
|
||||
override func viewDidLayoutSubviews() {
|
||||
super.viewDidLayoutSubviews()
|
||||
randmize(animated: false)
|
||||
}
|
||||
|
||||
@objc func toggleSort() {
|
||||
isSorting.toggle()
|
||||
updateSortButtonTitle()
|
||||
|
||||
if isSorting {
|
||||
startInsertionSort()
|
||||
}
|
||||
}
|
||||
|
||||
func updateSortButtonTitle() {
|
||||
navigationItem.rightBarButtonItem?.title = isSorting ? "Stop" : "Sort"
|
||||
}
|
||||
|
||||
func randmize(animated: Bool) {
|
||||
let snapshot = DiffableDataSourceSnapshot<Section, Node>()
|
||||
let rows = Int(collectionView.bounds.height / nodeSize.height) - 1
|
||||
let columns = Int(collectionView.bounds.width / nodeSize.width)
|
||||
|
||||
for _ in 0..<rows {
|
||||
let section = Section(count: columns)
|
||||
snapshot.appendSections([section])
|
||||
snapshot.appendItems(section.nodes)
|
||||
}
|
||||
|
||||
dataSource.apply(snapshot, animatingDifferences: animated)
|
||||
}
|
||||
|
||||
func startInsertionSort() {
|
||||
guard isSorting else {
|
||||
return
|
||||
}
|
||||
|
||||
var isNextSortRequired = false
|
||||
let snapshot = dataSource.snapshot()
|
||||
|
||||
for section in snapshot.sectionIdentifiers where !section.isSorted {
|
||||
section.sortNext()
|
||||
let items = section.nodes
|
||||
snapshot.deleteItems(items)
|
||||
snapshot.appendItems(items, toSection: section)
|
||||
isNextSortRequired = true
|
||||
}
|
||||
|
||||
if isNextSortRequired {
|
||||
dataSource.apply(snapshot)
|
||||
}
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(isNextSortRequired ? 150 : 1000)) { [weak self] in
|
||||
guard let self = self else {
|
||||
return
|
||||
}
|
||||
|
||||
if !isNextSortRequired {
|
||||
self.randmize(animated: false)
|
||||
}
|
||||
self.startInsertionSort()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension InsertionSortViewController: UICollectionViewDelegateFlowLayout {
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 0
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 0
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
|
||||
return .zero
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
||||
return nodeSize
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="InsertionSortViewController" customModule="Example_iOS" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="6GZ-26-LaT" id="93h-pF-UdX"/>
|
||||
<outlet property="view" destination="iN0-l3-epB" id="SEV-ah-gIe"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" bouncesZoom="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="6GZ-26-LaT">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="852"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="IOA-0B-TAt">
|
||||
<size key="itemSize" width="50" height="50"/>
|
||||
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
||||
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
||||
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
</collectionViewFlowLayout>
|
||||
</collectionView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="6GZ-26-LaT" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="N1l-xD-bVR"/>
|
||||
<constraint firstAttribute="trailing" secondItem="6GZ-26-LaT" secondAttribute="trailing" id="WAV-gN-b0a"/>
|
||||
<constraint firstAttribute="bottom" secondItem="6GZ-26-LaT" secondAttribute="bottom" id="cwF-t5-pdY"/>
|
||||
<constraint firstItem="6GZ-26-LaT" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="lef-dU-E4k"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,12 @@
|
||||
import UIKit
|
||||
|
||||
final class LabelCell: UICollectionViewCell {
|
||||
@IBOutlet var label: UILabel!
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
layer.borderWidth = 1
|
||||
layer.borderColor = UIColor.gray.cgColor
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="pYo-4D-KR8" customClass="LabelCell" customModule="Example_iOS" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qKi-9G-J20">
|
||||
<rect key="frame" x="10" y="0.0" width="280" height="32"/>
|
||||
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="qKi-9G-J20" firstAttribute="leading" secondItem="pYo-4D-KR8" secondAttribute="leading" constant="10" id="UJN-ZW-lz4"/>
|
||||
<constraint firstAttribute="trailing" secondItem="qKi-9G-J20" secondAttribute="trailing" constant="10" id="VbK-qH-sMr"/>
|
||||
<constraint firstItem="qKi-9G-J20" firstAttribute="top" secondItem="pYo-4D-KR8" secondAttribute="top" id="YkZ-vn-KK6"/>
|
||||
<constraint firstAttribute="bottom" secondItem="qKi-9G-J20" secondAttribute="bottom" id="au1-M8-Hh2"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="wQ5-Q0-9Pt"/>
|
||||
<connections>
|
||||
<outlet property="label" destination="qKi-9G-J20" id="hp7-fh-rao"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1" y="74"/>
|
||||
</collectionViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,84 @@
|
||||
import UIKit
|
||||
import DiffableDataSources
|
||||
|
||||
final class MountainsViewController: UIViewController {
|
||||
enum Section {
|
||||
case main
|
||||
}
|
||||
|
||||
struct Mountain: Hashable {
|
||||
var name: String
|
||||
|
||||
func contains(_ filter: String) -> Bool {
|
||||
guard !filter.isEmpty else {
|
||||
return true
|
||||
}
|
||||
|
||||
let lowercasedFilter = filter.lowercased()
|
||||
return name.lowercased().contains(lowercasedFilter)
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private var searchBar: UISearchBar!
|
||||
@IBOutlet private var collectionView: UICollectionView!
|
||||
|
||||
private lazy var dataSource = CollectionViewDiffableDataSource<Section, Mountain>(collectionView: collectionView) { collectionView, indexPath, mountain in
|
||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: LabelCell.name, for: indexPath) as! LabelCell
|
||||
cell.label.text = mountain.name
|
||||
return cell
|
||||
}
|
||||
|
||||
private let allMountains: [Mountain] = mountainsRawData.components(separatedBy: .newlines).map { line in
|
||||
let name = line.components(separatedBy: ",")[0]
|
||||
return Mountain(name: name)
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
title = "Mountains Search"
|
||||
|
||||
searchBar.delegate = self
|
||||
collectionView.delegate = self
|
||||
collectionView.register(UINib(nibName: LabelCell.name, bundle: .main), forCellWithReuseIdentifier: LabelCell.name)
|
||||
|
||||
search(filter: "")
|
||||
}
|
||||
|
||||
func search(filter: String) {
|
||||
let mountains = allMountains.lazy
|
||||
.filter { $0.contains(filter) }
|
||||
.sorted { $0.name < $1.name }
|
||||
|
||||
let snapshot = DiffableDataSourceSnapshot<Section, Mountain>()
|
||||
snapshot.appendSections([.main])
|
||||
snapshot.appendItems(mountains)
|
||||
dataSource.apply(snapshot)
|
||||
}
|
||||
}
|
||||
|
||||
extension MountainsViewController: UISearchBarDelegate {
|
||||
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
|
||||
search(filter: searchText)
|
||||
}
|
||||
}
|
||||
|
||||
extension MountainsViewController: UICollectionViewDelegateFlowLayout {
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 10
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 10
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
|
||||
return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
||||
let column = 2
|
||||
let width = (collectionView.bounds.width - 10 * CGFloat(column + 1)) / CGFloat(column)
|
||||
return CGSize(width: width, height: 32)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MountainsViewController" customModule="DiffableDataSourcesExample_iOS" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="kRf-0w-rJc" id="OBe-Sd-A2L"/>
|
||||
<outlet property="searchBar" destination="t4I-uz-ABD" id="NtR-qE-qZn"/>
|
||||
<outlet property="view" destination="a1D-Hd-aJU" id="Oyu-9w-QKH"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="a1D-Hd-aJU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="t4I-uz-ABD">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="56"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</searchBar>
|
||||
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="onDrag" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="kRf-0w-rJc">
|
||||
<rect key="frame" x="0.0" y="120" width="414" height="776"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="vHO-Ju-ApP">
|
||||
<size key="itemSize" width="50" height="50"/>
|
||||
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
||||
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
||||
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
</collectionViewFlowLayout>
|
||||
</collectionView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="kRf-0w-rJc" secondAttribute="bottom" id="CBM-WJ-k93"/>
|
||||
<constraint firstItem="t4I-uz-ABD" firstAttribute="leading" secondItem="a1D-Hd-aJU" secondAttribute="leading" id="H5j-5C-2jy"/>
|
||||
<constraint firstAttribute="trailing" secondItem="kRf-0w-rJc" secondAttribute="trailing" id="Hog-jr-nJY"/>
|
||||
<constraint firstItem="t4I-uz-ABD" firstAttribute="top" secondItem="ujY-YI-BSN" secondAttribute="top" id="IkY-zg-lm8"/>
|
||||
<constraint firstItem="kRf-0w-rJc" firstAttribute="top" secondItem="t4I-uz-ABD" secondAttribute="bottom" constant="20" id="aJ9-Wc-4Jd"/>
|
||||
<constraint firstAttribute="trailing" secondItem="t4I-uz-ABD" secondAttribute="trailing" id="d5P-My-ReY"/>
|
||||
<constraint firstItem="kRf-0w-rJc" firstAttribute="leading" secondItem="a1D-Hd-aJU" secondAttribute="leading" id="esv-zM-Pc2"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="ujY-YI-BSN"/>
|
||||
<point key="canvasLocation" x="17" y="173"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,82 @@
|
||||
import UIKit
|
||||
import DiffableDataSources
|
||||
|
||||
final class TopViewController: UIViewController {
|
||||
enum Section {
|
||||
case main
|
||||
}
|
||||
|
||||
enum Item {
|
||||
case mountains
|
||||
case insertionSort
|
||||
}
|
||||
|
||||
@IBOutlet private var tableView: UITableView!
|
||||
|
||||
private lazy var dataSource = TableViewDiffableDataSource<Section, Item>(tableView: tableView) { tableView, indexPath, item in
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: UITableViewCell.name, for: indexPath)
|
||||
cell.textLabel?.text = item.title
|
||||
cell.accessoryType = .disclosureIndicator
|
||||
return cell
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
title = "DiffableDataSources"
|
||||
|
||||
tableView.delegate = self
|
||||
tableView.register(UITableViewCell.self, forCellReuseIdentifier: UITableViewCell.name)
|
||||
tableView.rowHeight = 60
|
||||
tableView.contentInset.top = 30
|
||||
|
||||
reset()
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
if let indexPath = tableView.indexPathForSelectedRow {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
func reset() {
|
||||
let snapshot = DiffableDataSourceSnapshot<Section, Item>()
|
||||
snapshot.appendSections([.main])
|
||||
snapshot.appendItems([.mountains, .insertionSort])
|
||||
dataSource.apply(snapshot)
|
||||
}
|
||||
}
|
||||
|
||||
extension TopViewController: UITableViewDelegate {
|
||||
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
guard let item = dataSource.itemIdentifier(for: indexPath) else {
|
||||
return
|
||||
}
|
||||
|
||||
let viewController: UIViewController
|
||||
|
||||
switch item {
|
||||
case .mountains:
|
||||
viewController = MountainsViewController()
|
||||
|
||||
case .insertionSort:
|
||||
viewController = InsertionSortViewController()
|
||||
}
|
||||
|
||||
navigationController?.pushViewController(viewController, animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
private extension TopViewController.Item {
|
||||
var title: String {
|
||||
switch self {
|
||||
case .mountains:
|
||||
return "🗻 Mountains"
|
||||
|
||||
case .insertionSort:
|
||||
return "📱 Insertion Sort"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="TopViewController" customModule="Example_iOS" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="tableView" destination="tX9-V1-EJv" id="EHH-CF-6fE"/>
|
||||
<outlet property="view" destination="Ude-8O-7bT" id="VCy-jI-QZK"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="Ude-8O-7bT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="tX9-V1-EJv">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="tX9-V1-EJv" secondAttribute="bottom" id="0fN-0u-kPN"/>
|
||||
<constraint firstItem="tX9-V1-EJv" firstAttribute="top" secondItem="Ude-8O-7bT" secondAttribute="top" id="NML-7Q-dfc"/>
|
||||
<constraint firstItem="tX9-V1-EJv" firstAttribute="leading" secondItem="Ude-8O-7bT" secondAttribute="leading" id="h66-Ya-k2Y"/>
|
||||
<constraint firstAttribute="trailing" secondItem="tX9-V1-EJv" secondAttribute="trailing" id="phG-hF-KAp"/>
|
||||
</constraints>
|
||||
<viewLayoutGuide key="safeArea" id="iZn-f5-WVt"/>
|
||||
<point key="canvasLocation" x="68" y="141"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,4 @@
|
||||
import Cocoa
|
||||
|
||||
@NSApplicationMain
|
||||
final class AppDelegate: NSObject, NSApplicationDelegate {}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,773 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14810.11" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14810.11"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Application-->
|
||||
<scene sceneID="JPo-4y-FX3">
|
||||
<objects>
|
||||
<application id="hnw-xV-0zn" sceneMemberID="viewController">
|
||||
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
<menuItem title="Example-macOS" id="1Xt-HY-uBw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Example-macOS" systemMenu="apple" id="uQy-DD-JDr">
|
||||
<items>
|
||||
<menuItem title="About Example-macOS" id="5kV-Vb-QxS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
|
||||
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
|
||||
<menuItem title="Services" id="NMo-om-nkz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
|
||||
<menuItem title="Hide Example-macOS" keyEquivalent="h" id="Olw-nP-bQN">
|
||||
<connections>
|
||||
<action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="Kd2-mp-pUS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||
<menuItem title="Quit Example-macOS" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<connections>
|
||||
<action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="dMs-cI-mzQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="File" id="bib-Uj-vzu">
|
||||
<items>
|
||||
<menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="Ady-hI-5gd" id="4Si-XN-c54"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="Ady-hI-5gd" id="bVn-NM-KNZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="tXI-mr-wws">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="vNY-rz-j42">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="Ady-hI-5gd" id="Daa-9d-B3U"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
|
||||
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
|
||||
<connections>
|
||||
<action selector="performClose:" target="Ady-hI-5gd" id="HmO-Ls-i7Q"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
|
||||
<connections>
|
||||
<action selector="saveDocument:" target="Ady-hI-5gd" id="teZ-XB-qJY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
|
||||
<connections>
|
||||
<action selector="saveDocumentAs:" target="Ady-hI-5gd" id="mDf-zr-I0C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Revert to Saved" keyEquivalent="r" id="KaW-ft-85H">
|
||||
<connections>
|
||||
<action selector="revertDocumentToSaved:" target="Ady-hI-5gd" id="iJ3-Pv-kwq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
|
||||
<menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="Ady-hI-5gd" id="Din-rz-gC5"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
|
||||
<connections>
|
||||
<action selector="print:" target="Ady-hI-5gd" id="qaZ-4w-aoO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="5QF-Oa-p0T">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
|
||||
<connections>
|
||||
<action selector="undo:" target="Ady-hI-5gd" id="M6e-cu-g7V"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
|
||||
<connections>
|
||||
<action selector="redo:" target="Ady-hI-5gd" id="oIA-Rs-6OD"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
|
||||
<connections>
|
||||
<action selector="cut:" target="Ady-hI-5gd" id="YJe-68-I9s"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
|
||||
<connections>
|
||||
<action selector="copy:" target="Ady-hI-5gd" id="G1f-GL-Joy"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
|
||||
<connections>
|
||||
<action selector="paste:" target="Ady-hI-5gd" id="UvS-8e-Qdg"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteAsPlainText:" target="Ady-hI-5gd" id="cEh-KX-wJQ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="pa3-QI-u2k">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="delete:" target="Ady-hI-5gd" id="0Mk-Ml-PaM"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="Ady-hI-5gd" id="VNm-Mi-diN"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
|
||||
<menuItem title="Find" id="4EN-yA-p0u">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Find" id="1b7-l0-nxx">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="cD7-Qs-BN4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="WD3-Gg-5AJ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="NDo-RZ-v9R"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="HOh-sY-3ay"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="Ady-hI-5gd" id="U76-nv-p5D"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="Ady-hI-5gd" id="IOG-6D-g5B"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
|
||||
<items>
|
||||
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="Ady-hI-5gd" id="vFj-Ks-hy3"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="Ady-hI-5gd" id="fz7-VC-reM"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
|
||||
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="Ady-hI-5gd" id="7w6-Qz-0kB"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="Ady-hI-5gd" id="muD-Qn-j4w"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticSpellingCorrection:" target="Ady-hI-5gd" id="2lM-Qi-WAP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="9ic-FL-obx">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
|
||||
<items>
|
||||
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontSubstitutionsPanel:" target="Ady-hI-5gd" id="oku-mr-iSq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
|
||||
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="Ady-hI-5gd" id="3IJ-Se-DZD"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="Ady-hI-5gd" id="ptq-xd-QOA"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDashSubstitution:" target="Ady-hI-5gd" id="oCt-pO-9gS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" id="cwL-P1-jid">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="Ady-hI-5gd" id="Gip-E3-Fov"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Data Detectors" id="tRr-pd-1PS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDataDetection:" target="Ady-hI-5gd" id="R1I-Nq-Kbl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticTextReplacement:" target="Ady-hI-5gd" id="DvP-Fe-Py6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Transformations" id="2oI-Rn-ZJC">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
|
||||
<items>
|
||||
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="uppercaseWord:" target="Ady-hI-5gd" id="sPh-Tk-edu"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowercaseWord:" target="Ady-hI-5gd" id="iUZ-b5-hil"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="capitalizeWord:" target="Ady-hI-5gd" id="26H-TL-nsh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="xrE-MZ-jX0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="Ady-hI-5gd" id="654-Ng-kyl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="Ady-hI-5gd" id="dX8-6p-jy9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Format" id="jxT-CU-nIS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Format" id="GEO-Iw-cKr">
|
||||
<items>
|
||||
<menuItem title="Font" id="Gi5-1S-RQB">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
|
||||
<items>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
|
||||
<connections>
|
||||
<action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
|
||||
<connections>
|
||||
<action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
|
||||
<connections>
|
||||
<action selector="underline:" target="Ady-hI-5gd" id="FYS-2b-JAY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
|
||||
<connections>
|
||||
<action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
|
||||
<menuItem title="Kern" id="jBQ-r6-VK2">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Kern" id="tlD-Oa-oAM">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="GUa-eO-cwY">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardKerning:" target="Ady-hI-5gd" id="6dk-9l-Ckg"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="cDB-IK-hbR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffKerning:" target="Ady-hI-5gd" id="U8a-gz-Maa"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Tighten" id="46P-cB-AYj">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="tightenKerning:" target="Ady-hI-5gd" id="hr7-Nz-8ro"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Loosen" id="ogc-rX-tC1">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="loosenKerning:" target="Ady-hI-5gd" id="8i4-f9-FKE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Ligatures" id="o6e-r0-MWq">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="agt-UL-0e3">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardLigatures:" target="Ady-hI-5gd" id="7uR-wd-Dx6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="J7y-lM-qPV">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffLigatures:" target="Ady-hI-5gd" id="iX2-gA-Ilz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use All" id="xQD-1f-W4t">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useAllLigatures:" target="Ady-hI-5gd" id="KcB-kA-TuK"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Baseline" id="OaQ-X3-Vso">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Baseline" id="ijk-EB-dga">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="3Om-Ey-2VK">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unscript:" target="Ady-hI-5gd" id="0vZ-95-Ywn"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Superscript" id="Rqc-34-cIF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="superscript:" target="Ady-hI-5gd" id="3qV-fo-wpU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Subscript" id="I0S-gh-46l">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="subscript:" target="Ady-hI-5gd" id="Q6W-4W-IGz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Raise" id="2h7-ER-AoG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="raiseBaseline:" target="Ady-hI-5gd" id="4sk-31-7Q9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Lower" id="1tx-W0-xDw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowerBaseline:" target="Ady-hI-5gd" id="OF1-bc-KW4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
|
||||
<menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
|
||||
<connections>
|
||||
<action selector="orderFrontColorPanel:" target="Ady-hI-5gd" id="mSX-Xz-DV3"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
|
||||
<menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyFont:" target="Ady-hI-5gd" id="GJO-xA-L4q"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteFont:" target="Ady-hI-5gd" id="JfD-CL-leO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Text" id="Fal-I4-PZk">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Text" id="d9c-me-L2H">
|
||||
<items>
|
||||
<menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
|
||||
<connections>
|
||||
<action selector="alignLeft:" target="Ady-hI-5gd" id="zUv-R1-uAa"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
|
||||
<connections>
|
||||
<action selector="alignCenter:" target="Ady-hI-5gd" id="spX-mk-kcS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Justify" id="J5U-5w-g23">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="alignJustified:" target="Ady-hI-5gd" id="ljL-7U-jND"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
|
||||
<connections>
|
||||
<action selector="alignRight:" target="Ady-hI-5gd" id="r48-bG-YeY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
|
||||
<menuItem title="Writing Direction" id="H1b-Si-o9J">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
|
||||
<items>
|
||||
<menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="YGs-j5-SAR">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionNatural:" target="Ady-hI-5gd" id="qtV-5e-UBP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="Lbh-J2-qVU">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="S0X-9S-QSf"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="jFq-tB-4Kx">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeBaseWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="5fk-qB-AqJ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
|
||||
<menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem id="Nop-cj-93Q">
|
||||
<string key="title"> Default</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionNatural:" target="Ady-hI-5gd" id="lPI-Se-ZHp"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="BgM-ve-c93">
|
||||
<string key="title"> Left to Right</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionLeftToRight:" target="Ady-hI-5gd" id="caW-Bv-w94"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem id="RB4-Sm-HuC">
|
||||
<string key="title"> Right to Left</string>
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="makeTextWritingDirectionRightToLeft:" target="Ady-hI-5gd" id="EXD-6r-ZUu"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
|
||||
<menuItem title="Show Ruler" id="vLm-3I-IUL">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleRuler:" target="Ady-hI-5gd" id="FOx-HJ-KwY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyRuler:" target="Ady-hI-5gd" id="71i-fW-3W2"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteRuler:" target="Ady-hI-5gd" id="cSh-wd-qM2"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="View" id="H8h-7b-M4v">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
||||
<items>
|
||||
<menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleToolbarShown:" target="Ady-hI-5gd" id="BXY-wc-z0C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="runToolbarCustomizationPalette:" target="Ady-hI-5gd" id="pQI-g3-MTW"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="hB3-LF-h0Y"/>
|
||||
<menuItem title="Show Sidebar" keyEquivalent="s" id="kIP-vf-haE">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleSidebar:" target="Ady-hI-5gd" id="iwa-gc-5KM"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleFullScreen:" target="Ady-hI-5gd" id="dU3-MA-1Rq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="aUF-d1-5bR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="R4o-n2-Eq4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="Ady-hI-5gd" id="DIl-cC-cCs"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
|
||||
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="Ady-hI-5gd" id="DRN-fu-gQh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="wpr-3q-Mcd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
|
||||
<items>
|
||||
<menuItem title="Example-macOS Help" keyEquivalent="?" id="FKE-Sm-Kum">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="Ady-hI-5gd" id="y7X-2Q-9no"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
|
||||
</connections>
|
||||
</application>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Example_macOS" customModuleProvider="target"/>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="75" y="0.0"/>
|
||||
</scene>
|
||||
<!--Window Controller-->
|
||||
<scene sceneID="R2V-B0-nI4">
|
||||
<objects>
|
||||
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
|
||||
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="IQv-IB-iLA">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="B8D-0N-5wS" id="98r-iN-zZc"/>
|
||||
</connections>
|
||||
</window>
|
||||
<connections>
|
||||
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
|
||||
</connections>
|
||||
</windowController>
|
||||
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="75" y="250"/>
|
||||
</scene>
|
||||
<!--Mountains View Controller-->
|
||||
<scene sceneID="hIz-AP-VOD">
|
||||
<objects>
|
||||
<viewController id="XfG-lQ-9wD" customClass="MountainsViewController" customModule="Example_macOS" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" id="m2S-Jp-Qdl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<scrollView wantsLayer="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4GE-cR-LXC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="226"/>
|
||||
<clipView key="contentView" id="4a9-Kh-LYH">
|
||||
<rect key="frame" x="1" y="1" width="478" height="224"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<collectionView id="dtA-VK-I9R">
|
||||
<rect key="frame" x="0.0" y="0.0" width="478" height="224"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="eNu-C9-mnA">
|
||||
<size key="itemSize" width="50" height="50"/>
|
||||
</collectionViewFlowLayout>
|
||||
<color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</collectionView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="L20-kk-UVn">
|
||||
<rect key="frame" x="-100" y="-100" width="233" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="asA-yX-Sp8">
|
||||
<rect key="frame" x="463" y="1" width="16" height="224"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="E8d-oD-QL3">
|
||||
<rect key="frame" x="0.0" y="226" width="480" height="44"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="bgu-eY-Zmy"/>
|
||||
</constraints>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" id="YVe-iR-NNY">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</searchFieldCell>
|
||||
<connections>
|
||||
<action selector="searchFieldDidChangeText:" target="XfG-lQ-9wD" id="Gr9-gO-Z7U"/>
|
||||
</connections>
|
||||
</searchField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="4GE-cR-LXC" firstAttribute="leading" secondItem="m2S-Jp-Qdl" secondAttribute="leading" id="VIk-Ok-vIc"/>
|
||||
<constraint firstItem="4GE-cR-LXC" firstAttribute="top" secondItem="E8d-oD-QL3" secondAttribute="bottom" id="XQU-W6-iZ1"/>
|
||||
<constraint firstAttribute="bottom" secondItem="4GE-cR-LXC" secondAttribute="bottom" id="YzV-Nw-2Vr"/>
|
||||
<constraint firstItem="E8d-oD-QL3" firstAttribute="leading" secondItem="m2S-Jp-Qdl" secondAttribute="leading" id="ZFg-Fj-FCw"/>
|
||||
<constraint firstItem="E8d-oD-QL3" firstAttribute="top" secondItem="m2S-Jp-Qdl" secondAttribute="top" id="gxF-Uq-fEV"/>
|
||||
<constraint firstAttribute="trailing" secondItem="E8d-oD-QL3" secondAttribute="trailing" id="iJG-BW-3qO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4GE-cR-LXC" secondAttribute="trailing" id="icw-4L-Z2L"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="dtA-VK-I9R" id="gbo-bM-Eme"/>
|
||||
<outlet property="searchField" destination="E8d-oD-QL3" id="eKx-B7-AkC"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="75" y="655"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.files.user-selected.read-only</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2019 Ryo Aoyama. All rights reserved.</string>
|
||||
<key>NSMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,31 @@
|
||||
import AppKit
|
||||
|
||||
final class LabelItem: NSCollectionViewItem {
|
||||
static var itemIdentifier: NSUserInterfaceItemIdentifier {
|
||||
return NSUserInterfaceItemIdentifier(String(describing: self))
|
||||
}
|
||||
|
||||
let label = NSTextField()
|
||||
|
||||
override func loadView() {
|
||||
view = NSView()
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
label.textColor = .gray
|
||||
label.font = .systemFont(ofSize: 16)
|
||||
label.isEditable = false
|
||||
label.translatesAutoresizingMaskIntoConstraints = false
|
||||
view.addSubview(label)
|
||||
|
||||
let constraints = [
|
||||
label.topAnchor.constraint(equalTo: view.topAnchor),
|
||||
label.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
||||
label.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
||||
label.trailingAnchor.constraint(equalTo: view.trailingAnchor)
|
||||
]
|
||||
NSLayoutConstraint.activate(constraints)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
import AppKit
|
||||
import DiffableDataSources
|
||||
|
||||
final class MountainsViewController: NSViewController {
|
||||
enum Section {
|
||||
case main
|
||||
}
|
||||
|
||||
struct Mountain: Hashable {
|
||||
var name: String
|
||||
|
||||
func contains(_ filter: String) -> Bool {
|
||||
guard !filter.isEmpty else {
|
||||
return true
|
||||
}
|
||||
|
||||
let lowercasedFilter = filter.lowercased()
|
||||
return name.lowercased().contains(lowercasedFilter)
|
||||
}
|
||||
}
|
||||
|
||||
@IBOutlet private var searchField: NSSearchField!
|
||||
@IBOutlet private var collectionView: NSCollectionView!
|
||||
|
||||
private lazy var dataSource = CocoaCollectionViewDiffableDataSource<Section, Mountain>(collectionView: collectionView) { collectionView, indexPath, mountain in
|
||||
let item = collectionView.makeItem(withIdentifier: LabelItem.itemIdentifier, for: indexPath) as! LabelItem
|
||||
item.label.stringValue = mountain.name
|
||||
return item
|
||||
}
|
||||
|
||||
private let allMountains: [Mountain] = mountainsRawData.components(separatedBy: .newlines).map { line in
|
||||
let name = line.components(separatedBy: ",")[0]
|
||||
return Mountain(name: name)
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
title = "Mountains Search"
|
||||
|
||||
collectionView.delegate = self
|
||||
collectionView.register(LabelItem.self, forItemWithIdentifier: LabelItem.itemIdentifier)
|
||||
|
||||
search(filter: "")
|
||||
}
|
||||
|
||||
func search(filter: String) {
|
||||
let mountains = allMountains.lazy
|
||||
.filter { $0.contains(filter) }
|
||||
.sorted { $0.name < $1.name }
|
||||
|
||||
let snapshot = DiffableDataSourceSnapshot<Section, Mountain>()
|
||||
snapshot.appendSections([.main])
|
||||
snapshot.appendItems(mountains)
|
||||
dataSource.apply(snapshot)
|
||||
}
|
||||
|
||||
@IBAction func searchFieldDidChangeText(_ sender: NSSearchField) {
|
||||
search(filter: sender.stringValue)
|
||||
}
|
||||
}
|
||||
|
||||
extension MountainsViewController: NSCollectionViewDelegateFlowLayout {
|
||||
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 10
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return 10
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
|
||||
return NSEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
|
||||
let column = 3
|
||||
let width = (collectionView.bounds.width - 10 * CGFloat(column + 1)) / CGFloat(column)
|
||||
return CGSize(width: width, height: 44)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,391 @@
|
||||
// https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources
|
||||
|
||||
let mountainsRawData = """
|
||||
Mount Everest,8848
|
||||
K2,8611
|
||||
Kangchenjunga,8586
|
||||
Lhotse,8516
|
||||
Makalu,8485
|
||||
Cho Oyu,8201
|
||||
Dhaulagiri,8167
|
||||
Manaslu,8163
|
||||
Nanga Parbat,8126
|
||||
Annapurna,8091
|
||||
Gasherbrum I,8080
|
||||
Broad Peak,8051
|
||||
Gasherbrum II,8035
|
||||
Shishapangma,8027
|
||||
Gasherbrum III,7952
|
||||
Gyachung Kang,7952
|
||||
Annapurna II,7937
|
||||
Gasherbrum IV,7932
|
||||
Himalchuli,7893
|
||||
Distaghil Sar,7885
|
||||
Ngadi Chuli,7871
|
||||
Nuptse,7861
|
||||
Khunyang Chhish,7852
|
||||
Masherbrum,7821
|
||||
Nanda Devi,7816
|
||||
Chomo Lonzo,7804
|
||||
Batura Sar,7795
|
||||
Kanjut Sar,7790
|
||||
Rakaposhi,7788
|
||||
Namcha Barwa,7782
|
||||
Kamet,7756
|
||||
Saltoro Kangri,7742
|
||||
Jannu,7710
|
||||
Tirich Mir,7708
|
||||
Molamenqing,7703
|
||||
Gurla Mandhata,7694
|
||||
Saser Kangri,7672
|
||||
Chogolisa,7665
|
||||
Kongur Tagh,7649
|
||||
Shispare,7611
|
||||
Silberzacken,7597
|
||||
Changtse,7583
|
||||
Trivor,7577
|
||||
Gangkhar Puensum,7570
|
||||
Gongga Shan,7556
|
||||
Annapurna III,7555
|
||||
Kula Kangri,7554
|
||||
Muztagh Ata,7546
|
||||
Skyang Kangri,7545
|
||||
Liankang Kangri,7535
|
||||
Yukshin Gardan Sar,7530
|
||||
Annapurna IV,7525
|
||||
Mamostong Kangri,7516
|
||||
Ismoil Somoni Peak,7495
|
||||
Noshaq,7492
|
||||
Pumari Chhish,7492
|
||||
Passu Sar,7476
|
||||
Malubiting,7458
|
||||
Gangapurna,7455
|
||||
Muchu Chhish (Batura V),7453
|
||||
Jengish Chokusu,7439
|
||||
K12,7428
|
||||
Sia Kangri,7422
|
||||
Istor-o-Nal,7403
|
||||
Ghent Kangri,7401
|
||||
Haramosh Peak,7397
|
||||
Kabru,7394
|
||||
Ultar,7388
|
||||
Rimo I,7385
|
||||
Sherpi Kangri,7380
|
||||
Labuche Kang,7367
|
||||
Kirat Chuli,7365
|
||||
Skil Brum,7360
|
||||
Gimmigela Chuli,7350
|
||||
Bojohagur Duanasir,7329
|
||||
Chamlang,7319
|
||||
Jomolhari / Chomolhari,7314
|
||||
Baltoro Kangri,7312
|
||||
Siguang Ri,7308
|
||||
The Crown,7295
|
||||
Gyala Peri,7294
|
||||
Porong Ri,7292
|
||||
Baintha Brakk,7285
|
||||
Yutmaru Sar,7283
|
||||
K6,7282
|
||||
Kangpenqing,7281
|
||||
Mana Peak,7272
|
||||
Muztagh Tower,7273
|
||||
Diran,7257
|
||||
Apsarasas Kangri,7245
|
||||
Langtang Lirung,7227
|
||||
Khartaphu,7213
|
||||
Tongshanjiabu,7207
|
||||
Langtang Ri,7205
|
||||
Kangphu Kang,7204
|
||||
Annapurna South,7219
|
||||
Melungtse,7181
|
||||
Liushi Shan,7167
|
||||
Baruntse,7162
|
||||
Pumori,7161
|
||||
Hardeol,7151
|
||||
Gasherbrum V,7147
|
||||
Latok I,7145
|
||||
Nemjung,7140
|
||||
Udren Zom,7140
|
||||
Chaukhamba,7138
|
||||
Nun Kun,7135
|
||||
Tilicho Peak,7134
|
||||
Gauri Sankar,7134
|
||||
Lenin Peak,7134
|
||||
Api,7132
|
||||
Pauhunri,7128
|
||||
Trisul,7120
|
||||
Korzhenevskaya,7105
|
||||
Lunpo Gangri,7095
|
||||
Satopanth,7075
|
||||
Tirsuli,7074
|
||||
Dunagiri,7066
|
||||
Kangto,7060
|
||||
Nyegyi Kansang,7047
|
||||
Link Sar,7041
|
||||
Kezhen Peak,7038
|
||||
Shah Dhar,7038
|
||||
Spantik,7027
|
||||
Khan Tengri,7010
|
||||
Machapuchare,6993
|
||||
Laila Peak (Haramosh Valley),6985
|
||||
Kang Guru,6981
|
||||
Gasherbrum VI,6979
|
||||
Karun Kuh,6977
|
||||
Avicenna Peak,6974
|
||||
Ulugh Muztagh,6973
|
||||
Aconcagua,6962
|
||||
Napko Kangri,6956
|
||||
Kedarnath,6940
|
||||
K7,6934
|
||||
Panchchuli,6904
|
||||
Thalay Sagar,6904
|
||||
Lunkho e Dosare,6901
|
||||
Lunag Ri,6895
|
||||
Ojos del Salado,6891
|
||||
Siniolchu,6888
|
||||
Kanjiroba,6883
|
||||
Bairiga,6882
|
||||
Koyo Zom,6872
|
||||
Nanda Kot,6861
|
||||
Kubi Gangri,6859
|
||||
Angel Sar,6858
|
||||
Bhagirathi I,6856
|
||||
Jethi Bahurani,6850
|
||||
Chongra Peak,6830
|
||||
Reo Purgyil,6816
|
||||
Ama Dablam,6812
|
||||
Monte Pissis,6795
|
||||
Biarchedi,6781
|
||||
Huascarán Sur,6768
|
||||
Cerro Bonete,6759
|
||||
Nevado Tres Cruces,6748
|
||||
Kawagarbo,6740
|
||||
Llullaillaco,6739
|
||||
Cho Polu,6735
|
||||
Kangju Kangri,6725
|
||||
Changla,6721
|
||||
Mercedario,6720
|
||||
Mount Pandim,6691
|
||||
Num Ri,6677
|
||||
Lungser Kangri,6666
|
||||
Meru Peak,6660
|
||||
Gul Lasht Zom,6657
|
||||
Huascarán Norte,6655
|
||||
Khumbutse,6640
|
||||
Mount Kailash,6638
|
||||
Yerupajá,6635
|
||||
Nevado Tres Cruces Central,6629
|
||||
Thamserku,6623
|
||||
Geladaindong Peak,6621
|
||||
Incahuasi,6621
|
||||
Pangpoche,6620
|
||||
Manirang,6597
|
||||
Nilkantha,6596
|
||||
Phuparash Peak,6574
|
||||
Sickle Moon Peak,6574
|
||||
Buni Zom,6542
|
||||
Nevado Sajama,6542
|
||||
Ghamubar Zom,6518
|
||||
Singu Chuli,6501
|
||||
Taboche,6501
|
||||
Cerro El Muerto,6488
|
||||
Mera Peak,6476
|
||||
Hiunchuli,6441
|
||||
Cholatse,6440
|
||||
Illimani,6438
|
||||
Ancohuma,6427
|
||||
Coropuna,6425
|
||||
Antofalla,6409
|
||||
Kang Yatze,6400
|
||||
Huandoy,6395
|
||||
Ausangate,6384
|
||||
Illampu,6368
|
||||
Kusum Kangguru,6367
|
||||
Kinnaur Kailash,6349
|
||||
Parinaquta,6348
|
||||
Siula Grande,6344
|
||||
Bamba Dhura,6334
|
||||
Ampato,6288
|
||||
Amne Machin,6282
|
||||
Pomerape,6282
|
||||
Salcantay,6271
|
||||
Chimborazo,6267
|
||||
Mount Siguniang,6250
|
||||
Grid Nie Mountain,6224
|
||||
Yuzhu Peak,6224
|
||||
Genyen Massif,6204
|
||||
Kongde Ri,6187
|
||||
Aucanquilcha,6176
|
||||
Imja Tse,6189
|
||||
Denali (Mt. McKinley),6168
|
||||
Stok Kangri,6137
|
||||
Lobuche,6119
|
||||
Marmolejo,6108
|
||||
Laila Peak (Hushe Valley),6096
|
||||
Pisang Peak,6091
|
||||
Huayna Potosí,6088
|
||||
Aracar,6082
|
||||
Chachakumani,6074
|
||||
Chachani,6057
|
||||
Mianzimu,6054
|
||||
Acotango,6052
|
||||
Socompa,6051
|
||||
Acamarachi,6046
|
||||
Shayaz,6026
|
||||
Hualca Hualca,6025
|
||||
Uturunku,6020
|
||||
Mitre Peak,6010
|
||||
Laila Peak,5971
|
||||
Mount Logan,5959
|
||||
Alpamayo,5947
|
||||
Cerro Lípez,5929
|
||||
Licancabur,5920
|
||||
Falak Sar,5918
|
||||
Cotopaxi,5897
|
||||
Mount Kilimanjaro,5895
|
||||
Hkakabo Razi,5881
|
||||
San José,5856
|
||||
El Misti,5822
|
||||
Altun Shan,5798
|
||||
Cayambe,5790
|
||||
Pico Cristóbal Colón,5776
|
||||
Antisana,5753
|
||||
Nevado Pisco,5752
|
||||
Nevado Anallajsi,5750
|
||||
Pokalde,5745
|
||||
Ubinas,5672
|
||||
Pichu Pichu,5664
|
||||
Mount Elbrus,5642
|
||||
Mehrbani Peak,5639
|
||||
Pico de Orizaba,5636
|
||||
Mount Damavand,5610
|
||||
Nevado Mismi,5597
|
||||
Jade Dragon Snow Mountain,5596
|
||||
Lascar Volcano,5592
|
||||
Mount Xuebaoding,5588
|
||||
Kala Patthar,5545
|
||||
Mount Saint Elias,5489
|
||||
Concord Peak,5469
|
||||
Machoi Peak,5458
|
||||
El Plomo,5450
|
||||
Bogda Feng,5445
|
||||
Mount Little Xuebaoding,5443
|
||||
Cerro El Plomo,5434
|
||||
Popocatépetl,5426
|
||||
Kolahoi Peak,5425
|
||||
Chacaltaya,5421
|
||||
Mount Pomiu,5413
|
||||
Ritacuba Blanco,5410
|
||||
Haba Xueshan,5396
|
||||
Nevado del Ruiz,5389
|
||||
Nevado del Huila,5364
|
||||
El Altar,5320
|
||||
Mount Foraker,5304
|
||||
Mount Haramukh,5300
|
||||
Nevado del Tolima,5276
|
||||
Maipo,5264
|
||||
Illiniza,5248
|
||||
Sirbal Peak,5236
|
||||
Sangay,5230
|
||||
Iztaccíhuatl,5230
|
||||
Mount Lucania,5226
|
||||
Dykh-Tau,5205
|
||||
Shkhara,5201
|
||||
Mount Kenya,5199
|
||||
Malika Parbat,5190
|
||||
Amarnath Peak,5186
|
||||
King Peak,5173
|
||||
Boris Yeltsin Peak,5168
|
||||
Koshtan-Tau,5150
|
||||
Mount Ararat,5137
|
||||
Mount Stanley,5109
|
||||
Mount Steele,5073
|
||||
Janga,5051
|
||||
Mount Kazbek,5047
|
||||
Tungurahua,5023
|
||||
Carihuairazo,5018
|
||||
Mount Bona,5005
|
||||
Mount Blackburn,4996
|
||||
Pico Bolívar,4981
|
||||
Pik Talgar,4979
|
||||
Shota Rustaveli Peak,4960
|
||||
Gunshar,4950
|
||||
Mount Sanford,4949
|
||||
Pico Humboldt,4940
|
||||
Vinson Massif,4892
|
||||
Pico Bonpland,4890
|
||||
Puncak Jaya,4884
|
||||
Pico La Concha,4870
|
||||
Gistola,4860
|
||||
Tetnuldi,4858
|
||||
Mount Tyree,4852
|
||||
Huaynaputina,4850
|
||||
Alam Kuh,4850
|
||||
Mount Wood,4842
|
||||
Mount Vancouver,4812
|
||||
Sabalan,4811
|
||||
Mont Blanc,4810
|
||||
Corazón,4790
|
||||
Pichincha,4784
|
||||
Jimara,4780
|
||||
Mount Churchill,4766
|
||||
Puncak Mandala,4760
|
||||
Klyuchevskaya Sopka,4750
|
||||
Puncak Trikora,4750
|
||||
Mont Blanc de Courmayeur,4748
|
||||
Sunset Peak,4745
|
||||
Mount Slaggard,4742
|
||||
Pico Piedras Blancas,4740
|
||||
Pico El Toro,4730
|
||||
Tatakooti Peak,4725
|
||||
Rumiñahui,4721
|
||||
Pico El Leon,4720
|
||||
Ushba,4710
|
||||
Volcán Domuyo,4709
|
||||
Pico Los Nevados,4700
|
||||
Pico Pan de Azucar,4680
|
||||
Naltar Peak,4678
|
||||
Mount Fairweather,4663
|
||||
Pico Mucuñuque,4660
|
||||
Pico El Buitre,4650
|
||||
Khazret Sultan,4643
|
||||
Sierra Negra,4640
|
||||
Dufourspitze (Monte Rosa),4634
|
||||
Dunantspitze (Monte Rosa),4632
|
||||
Nordend (Monte Rosa),4609
|
||||
Mount Hubbard,4577
|
||||
Nevado de Toluca,4577
|
||||
Mount Meru,4566
|
||||
Zumsteinspitze (Monte Rosa),4563
|
||||
Signalkuppe (Monte Rosa),4554
|
||||
Dom,4545
|
||||
Ras Dashen,4533
|
||||
Eastern Liskamm (Lyskamm),4527
|
||||
Mount Bear,4521
|
||||
Mount Wilhelm,4509
|
||||
Mount Karisimbi,4507
|
||||
Mount Walsh,4507
|
||||
Belukha Mountain,4506
|
||||
Weisshorn,4506
|
||||
Tebulosmta,4493
|
||||
Täschhorn,4491
|
||||
Bazarduzu Dagi,4485
|
||||
Matterhorn,4478
|
||||
Mount Rutford,4477
|
||||
Mont Maudit,4465
|
||||
Babis Mta,4454
|
||||
Mount Shani,4451
|
||||
Dena,4448
|
||||
Vladimir Putin Peak,4446
|
||||
Mount Hunter,4442
|
||||
Parrotspitze (Monte Rosa),4432
|
||||
Mount Whitney,4421
|
||||
Mount Alverstone,4420
|
||||
University Peak,4411
|
||||
Aello Peak,4403
|
||||
Mount Elbert,4402
|
||||
Mount Massive,4395
|
||||
Mount Harvard,4395
|
||||
Mount Rainier,4392
|
||||
Kholeno,4387
|
||||
"""
|
||||
@@ -0,0 +1,10 @@
|
||||
<H1 align="center">
|
||||
DiffableDataSources Examples
|
||||
</H1>
|
||||
|
||||
## How to Run
|
||||
|
||||
1. Clone the DiffableDataSources repository.
|
||||
1. Checkout the dependencies using terminal command `$ make setup` at the project root directory.
|
||||
1. Open example project workspace.
|
||||
1. Run.
|
||||
Reference in New Issue
Block a user