From 9d053b150816f092d5c2784d91ae1d39dc620ba2 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 11:39:39 -0400 Subject: [PATCH 1/9] Updated sf-ios to 5.0.0 to use NS_ENUM for Swift interoperability. Updated code for modern Objective-C. --- Podfile | 4 +- sf-wkb-ios.podspec | 7 ++-- sf-wkb-ios.xcodeproj/project.pbxproj | 40 +++++++------------ .../xcschemes/sf-wkb-ios.xcscheme | 2 +- sf-wkb-ios/SFWBGeometryCodes.h | 10 ++--- sf-wkb-ios/SFWBGeometryCodes.m | 17 ++++---- sf-wkb-ios/SFWBGeometryReader.h | 14 ++----- sf-wkb-ios/SFWBGeometryReader.m | 12 +++--- sf-wkb-ios/SFWBGeometryTypeInfo.h | 6 +-- sf-wkb-ios/SFWBGeometryTypeInfo.m | 6 +-- sf-wkb-ios/SFWBGeometryWriter.h | 9 +---- sf-wkb-ios/SFWBGeometryWriter.m | 4 +- sf-wkb-ios/sf-wkb-ios-Bridging-Header.h | 19 --------- sf-wkb-ios/sf_wkb_ios.h | 4 ++ sf-wkb-ios/sf_wkb_ios.swift | 9 ----- sf-wkb-iosTests/SFWBGeometryTestUtils.h | 7 +--- sf-wkb-iosTests/SFWBGeometryTestUtils.m | 14 +++---- sf-wkb-iosTests/SFWBReadmeTest.h | 2 +- sf-wkb-iosTests/SFWBReadmeTest.m | 7 ++-- sf-wkb-iosTests/SFWBSwiftReadmeTest.swift | 3 +- sf-wkb-iosTests/SFWBTestCase.m | 36 +++++++---------- sf-wkb-iosTests/SFWBTestUtils.h | 2 +- .../sf-wkb-iosTests-Bridging-Header.h | 1 - 23 files changed, 88 insertions(+), 147 deletions(-) delete mode 100644 sf-wkb-ios/sf-wkb-ios-Bridging-Header.h delete mode 100644 sf-wkb-ios/sf_wkb_ios.swift diff --git a/Podfile b/Podfile index 47d9f0e..2d57427 100644 --- a/Podfile +++ b/Podfile @@ -2,7 +2,9 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '12.0' target 'sf-wkb-ios' do - pod 'sf-ios', '~> 4.1.4' +# pod 'sf-ios', '5.0.0' + pod 'sf-ios', :git => 'https://github.com/ngageoint/simple-features-ios.git', :branch => 'psolt/v5-NS_ENUM' + target 'sf-wkb-iosTests' do inherit! :search_paths diff --git a/sf-wkb-ios.podspec b/sf-wkb-ios.podspec index 4562851..412c00e 100644 --- a/sf-wkb-ios.podspec +++ b/sf-wkb-ios.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'sf-wkb-ios' - s.version = '4.1.5' + s.version = '5.0.0' s.license = {:type => 'MIT', :file => 'LICENSE' } s.summary = 'iOS SDK for Simple Features Well-Known Binary' s.homepage = 'https://github.com/ngageoint/simple-features-wkb-ios' @@ -13,9 +13,10 @@ Pod::Spec.new do |s| s.platform = :ios, '12.0' s.ios.deployment_target = '12.0' - s.source_files = 'sf-wkb-ios/**/*.{h,m}' + s.source_files = 'sf-wkb-ios/**/*.{m}' + s.public_header_files = 'sf-wkb-ios/**/*.h' s.frameworks = 'Foundation' - s.dependency 'sf-ios', '~> 4.1.4' + s.dependency 'sf-ios', '5.0.0' end diff --git a/sf-wkb-ios.xcodeproj/project.pbxproj b/sf-wkb-ios.xcodeproj/project.pbxproj index 7679343..ecf273d 100644 --- a/sf-wkb-ios.xcodeproj/project.pbxproj +++ b/sf-wkb-ios.xcodeproj/project.pbxproj @@ -10,23 +10,21 @@ 041F18DB24C9CDC6001311E4 /* SFWBReadmeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 041F18DA24C9CDC6001311E4 /* SFWBReadmeTest.m */; }; 041F18DE24C9E333001311E4 /* SFWBSwiftReadmeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041F18DD24C9E333001311E4 /* SFWBSwiftReadmeTest.swift */; }; 042FC6571B963FE500549A4B /* sf_wkb_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 042FC64B1B963FE500549A4B /* sf_wkb_ios.framework */; }; - 042FC6CB1B96421E00549A4B /* SFWBGeometryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6951B96421E00549A4B /* SFWBGeometryReader.h */; }; + 042FC6CB1B96421E00549A4B /* SFWBGeometryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6951B96421E00549A4B /* SFWBGeometryReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; 042FC6CC1B96421E00549A4B /* SFWBGeometryReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 042FC6961B96421E00549A4B /* SFWBGeometryReader.m */; }; - 042FC6CD1B96421E00549A4B /* SFWBGeometryWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6971B96421E00549A4B /* SFWBGeometryWriter.h */; }; + 042FC6CD1B96421E00549A4B /* SFWBGeometryWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6971B96421E00549A4B /* SFWBGeometryWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 042FC6CE1B96421E00549A4B /* SFWBGeometryWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 042FC6981B96421E00549A4B /* SFWBGeometryWriter.m */; }; 042FC6D31B96421E00549A4B /* sf-wkb-ios-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 042FC69E1B96421E00549A4B /* sf-wkb-ios-Prefix.pch */; }; - 042FC6D51B96453E00549A4B /* sf_wkb_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6D41B96453E00549A4B /* sf_wkb_ios.h */; }; - 0472B51B1C03590500496B87 /* sf-wkb-ios-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 0472B51A1C03590500496B87 /* sf-wkb-ios-Bridging-Header.h */; }; - 0493A59A2AE934DF000B75E6 /* sf_wkb_ios.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0493A5992AE934DF000B75E6 /* sf_wkb_ios.swift */; }; + 042FC6D51B96453E00549A4B /* sf_wkb_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6D41B96453E00549A4B /* sf_wkb_ios.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04AB919B1BF29ECD00894999 /* SFWBTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AB919A1BF29ECD00894999 /* SFWBTestCase.m */; }; 04AB919E1BF29F9A00894999 /* SFWBTestUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AB919D1BF29F9A00894999 /* SFWBTestUtils.m */; }; 04AB91A11BF2A05200894999 /* SFWBGeometryTestUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AB91A01BF2A05200894999 /* SFWBGeometryTestUtils.m */; }; - 04F45635209BBE6500FC299E /* SFWBGeometryCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F45633209BBE6500FC299E /* SFWBGeometryCodes.h */; }; + 04F45635209BBE6500FC299E /* SFWBGeometryCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F45633209BBE6500FC299E /* SFWBGeometryCodes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04F45636209BBE6500FC299E /* SFWBGeometryCodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F45634209BBE6500FC299E /* SFWBGeometryCodes.m */; }; - 04F45639209BBE9200FC299E /* SFWBGeometryTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F45637209BBE9100FC299E /* SFWBGeometryTypeInfo.h */; }; + 04F45639209BBE9200FC299E /* SFWBGeometryTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F45637209BBE9100FC299E /* SFWBGeometryTypeInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 04F4563A209BBE9200FC299E /* SFWBGeometryTypeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F45638209BBE9200FC299E /* SFWBGeometryTypeInfo.m */; }; - B4B9C5C590F6D09B45DC2BDB /* libPods-sf-wkb-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F9A70C9172FC5893F17C0FB6 /* libPods-sf-wkb-ios.a */; }; - B5D94958E350F092F31540ED /* libPods-sf-wkb-iosTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 499642A447440D35F38311C9 /* libPods-sf-wkb-iosTests.a */; }; + 1418C9E2CE4F17DBD13AE339 /* libPods-sf-wkb-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F738D68771162FB6855AD96F /* libPods-sf-wkb-ios.a */; }; + E01C823ECF81F50E008ED586 /* libPods-sf-wkb-iosTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 214A3B08A38054FDBA470AD6 /* libPods-sf-wkb-iosTests.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -54,8 +52,6 @@ 042FC6981B96421E00549A4B /* SFWBGeometryWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFWBGeometryWriter.m; sourceTree = ""; }; 042FC69E1B96421E00549A4B /* sf-wkb-ios-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "sf-wkb-ios-Prefix.pch"; sourceTree = ""; }; 042FC6D41B96453E00549A4B /* sf_wkb_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sf_wkb_ios.h; sourceTree = ""; }; - 0472B51A1C03590500496B87 /* sf-wkb-ios-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "sf-wkb-ios-Bridging-Header.h"; sourceTree = ""; }; - 0493A5992AE934DF000B75E6 /* sf_wkb_ios.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = sf_wkb_ios.swift; sourceTree = ""; }; 04AB919A1BF29ECD00894999 /* SFWBTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFWBTestCase.m; sourceTree = ""; }; 04AB919C1BF29F9A00894999 /* SFWBTestUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFWBTestUtils.h; sourceTree = ""; }; 04AB919D1BF29F9A00894999 /* SFWBTestUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFWBTestUtils.m; sourceTree = ""; }; @@ -66,11 +62,11 @@ 04F45637209BBE9100FC299E /* SFWBGeometryTypeInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFWBGeometryTypeInfo.h; sourceTree = ""; }; 04F45638209BBE9200FC299E /* SFWBGeometryTypeInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFWBGeometryTypeInfo.m; sourceTree = ""; }; 192D9E5452A64EB6A7955A5A /* Pods-sf-wkb-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkb-ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkb-ios/Pods-sf-wkb-ios.release.xcconfig"; sourceTree = ""; }; + 214A3B08A38054FDBA470AD6 /* libPods-sf-wkb-iosTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-sf-wkb-iosTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 457018C9103A514A78925D9E /* Pods-sf-wkb-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkb-ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkb-ios/Pods-sf-wkb-ios.debug.xcconfig"; sourceTree = ""; }; - 499642A447440D35F38311C9 /* libPods-sf-wkb-iosTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-sf-wkb-iosTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6179C77188B4A0E8D4DEDBEB /* Pods-sf-wkb-iosTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkb-iosTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkb-iosTests/Pods-sf-wkb-iosTests.debug.xcconfig"; sourceTree = ""; }; B17E59AE80997CC09DD740D6 /* Pods-sf-wkb-iosTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkb-iosTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkb-iosTests/Pods-sf-wkb-iosTests.release.xcconfig"; sourceTree = ""; }; - F9A70C9172FC5893F17C0FB6 /* libPods-sf-wkb-ios.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-sf-wkb-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + F738D68771162FB6855AD96F /* libPods-sf-wkb-ios.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-sf-wkb-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -78,7 +74,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B4B9C5C590F6D09B45DC2BDB /* libPods-sf-wkb-ios.a in Frameworks */, + 1418C9E2CE4F17DBD13AE339 /* libPods-sf-wkb-ios.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -87,7 +83,7 @@ buildActionMask = 2147483647; files = ( 042FC6571B963FE500549A4B /* sf_wkb_ios.framework in Frameworks */, - B5D94958E350F092F31540ED /* libPods-sf-wkb-iosTests.a in Frameworks */, + E01C823ECF81F50E008ED586 /* libPods-sf-wkb-iosTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -118,7 +114,6 @@ isa = PBXGroup; children = ( 042FC6D41B96453E00549A4B /* sf_wkb_ios.h */, - 0493A5992AE934DF000B75E6 /* sf_wkb_ios.swift */, 04F45633209BBE6500FC299E /* SFWBGeometryCodes.h */, 04F45634209BBE6500FC299E /* SFWBGeometryCodes.m */, 042FC6951B96421E00549A4B /* SFWBGeometryReader.h */, @@ -129,7 +124,6 @@ 042FC6981B96421E00549A4B /* SFWBGeometryWriter.m */, 042FC69E1B96421E00549A4B /* sf-wkb-ios-Prefix.pch */, 042FC64E1B963FE500549A4B /* Supporting Files */, - 0472B51A1C03590500496B87 /* sf-wkb-ios-Bridging-Header.h */, ); path = "sf-wkb-ios"; sourceTree = ""; @@ -170,8 +164,8 @@ 63206AE083C9F99B2058A9EE /* Frameworks */ = { isa = PBXGroup; children = ( - 499642A447440D35F38311C9 /* libPods-sf-wkb-iosTests.a */, - F9A70C9172FC5893F17C0FB6 /* libPods-sf-wkb-ios.a */, + F738D68771162FB6855AD96F /* libPods-sf-wkb-ios.a */, + 214A3B08A38054FDBA470AD6 /* libPods-sf-wkb-iosTests.a */, ); name = Frameworks; sourceTree = ""; @@ -194,13 +188,12 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0472B51B1C03590500496B87 /* sf-wkb-ios-Bridging-Header.h in Headers */, 042FC6CB1B96421E00549A4B /* SFWBGeometryReader.h in Headers */, 04F45639209BBE9200FC299E /* SFWBGeometryTypeInfo.h in Headers */, 042FC6D51B96453E00549A4B /* sf_wkb_ios.h in Headers */, - 042FC6D31B96421E00549A4B /* sf-wkb-ios-Prefix.pch in Headers */, 04F45635209BBE6500FC299E /* SFWBGeometryCodes.h in Headers */, 042FC6CD1B96421E00549A4B /* SFWBGeometryWriter.h in Headers */, + 042FC6D31B96421E00549A4B /* sf-wkb-ios-Prefix.pch in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -252,7 +245,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1500; + LastUpgradeCheck = 1620; ORGANIZATIONNAME = NGA; TargetAttributes = { 042FC64A1B963FE500549A4B = { @@ -345,7 +338,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0493A59A2AE934DF000B75E6 /* sf_wkb_ios.swift in Sources */, 042FC6CE1B96421E00549A4B /* SFWBGeometryWriter.m in Sources */, 042FC6CC1B96421E00549A4B /* SFWBGeometryReader.m in Sources */, 04F4563A209BBE9200FC299E /* SFWBGeometryTypeInfo.m in Sources */, @@ -551,7 +543,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = 6179C77188B4A0E8D4DEDBEB /* Pods-sf-wkb-iosTests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -578,7 +569,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = B17E59AE80997CC09DD740D6 /* Pods-sf-wkb-iosTests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", diff --git a/sf-wkb-ios.xcodeproj/xcshareddata/xcschemes/sf-wkb-ios.xcscheme b/sf-wkb-ios.xcodeproj/xcshareddata/xcschemes/sf-wkb-ios.xcscheme index 0f68a24..053d8fb 100644 --- a/sf-wkb-ios.xcodeproj/xcshareddata/xcschemes/sf-wkb-ios.xcscheme +++ b/sf-wkb-ios.xcodeproj/xcshareddata/xcschemes/sf-wkb-ios.xcscheme @@ -1,6 +1,6 @@ *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType; +-(SFGeometry *) readWithFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType; /** * Read the geometry type info @@ -448,7 +440,7 @@ * * @return geometry */ -+(SFGeometry *) readGeometryWithReader: (SFByteReader *) reader andFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType; ++(SFGeometry *) readGeometryWithReader: (SFByteReader *) reader andFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType; /** * Read the geometry type info diff --git a/sf-wkb-ios/SFWBGeometryReader.m b/sf-wkb-ios/SFWBGeometryReader.m index 0261dab..a6221fb 100644 --- a/sf-wkb-ios/SFWBGeometryReader.m +++ b/sf-wkb-ios/SFWBGeometryReader.m @@ -74,14 +74,14 @@ -(SFGeometry *) readWithFilter: (NSObject *) filter andExpecte return [self readWithFilter:filter inType:SF_NONE andExpectedType:expectedType]; } --(SFGeometry *) readWithFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType{ +-(SFGeometry *) readWithFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType{ CFByteOrder originalByteOrder = [_reader byteOrder]; // Read the byte order and geometry type SFWBGeometryTypeInfo *geometryTypeInfo = [self readGeometryType]; - enum SFGeometryType geometryType = [geometryTypeInfo geometryType]; + SFGeometryType geometryType = [geometryTypeInfo geometryType]; BOOL hasZ = [geometryTypeInfo hasZ]; BOOL hasM = [geometryTypeInfo hasM]; @@ -137,7 +137,7 @@ -(SFGeometry *) readWithFilter: (NSObject *) filter inType: (e geometry = [self readTriangleWithFilter:filter andHasZ:hasZ andHasM:hasM]; break; default: - [NSException raise:@"Geometry Not Supported" format:@"Geometry Type not supported: %d", geometryType]; + [NSException raise:@"Geometry Not Supported" format:@"Geometry Type not supported: %ld", geometryType]; } if(![SFWBGeometryReader filter:filter geometry:geometry inType:containingType]){ @@ -184,7 +184,7 @@ -(SFWBGeometryTypeInfo *) readGeometryType{ } // Determine the geometry type - enum SFGeometryType geometryType = [SFWBGeometryCodes geometryTypeFromCode:geometryTypeCode]; + SFGeometryType geometryType = [SFWBGeometryCodes geometryTypeFromCode:geometryTypeCode]; // Determine if the geometry has a z (3d) or m (linear referencing // system) value @@ -474,7 +474,7 @@ +(SFGeometry *) readGeometryWithReader: (SFByteReader *) reader andFilter: (NSOb return [self readGeometryWithReader:reader andFilter:filter inType:SF_NONE andExpectedType:expectedType]; } -+(SFGeometry *) readGeometryWithReader: (SFByteReader *) reader andFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType{ ++(SFGeometry *) readGeometryWithReader: (SFByteReader *) reader andFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType{ SFWBGeometryReader *geometryReader = [[SFWBGeometryReader alloc] initWithReader:reader]; return [geometryReader readWithFilter:filter inType:containingType andExpectedType:expectedType]; } @@ -620,7 +620,7 @@ +(SFTriangle *) readTriangleWithReader: (SFByteReader *) reader andFilter: (NSOb * geometry or null * @return true if passes filter */ -+(BOOL) filter: (NSObject *) filter geometry: (SFGeometry *) geometry inType: (enum SFGeometryType) containingType{ ++(BOOL) filter: (NSObject *) filter geometry: (SFGeometry *) geometry inType: (SFGeometryType) containingType{ return filter == nil || geometry == nil || [filter filterGeometry:geometry inType:containingType]; } diff --git a/sf-wkb-ios/SFWBGeometryTypeInfo.h b/sf-wkb-ios/SFWBGeometryTypeInfo.h index bc52d22..344e9f1 100644 --- a/sf-wkb-ios/SFWBGeometryTypeInfo.h +++ b/sf-wkb-ios/SFWBGeometryTypeInfo.h @@ -6,7 +6,7 @@ // Copyright © 2018 NGA. All rights reserved. // -#import "SFGeometryTypes.h" +@import sf_ios; /** * Geometry type info @@ -25,7 +25,7 @@ * @param hasM * has m */ --(instancetype) initWithCode: (int) geometryTypeCode andType: (enum SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM; +-(instancetype) initWithCode: (int) geometryTypeCode andType: (SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM; /** * Get the geometry type code @@ -39,7 +39,7 @@ * * @return geometry type */ --(enum SFGeometryType) geometryType; +-(SFGeometryType) geometryType; /** * Has z values diff --git a/sf-wkb-ios/SFWBGeometryTypeInfo.m b/sf-wkb-ios/SFWBGeometryTypeInfo.m index b60df23..fdd2c14 100644 --- a/sf-wkb-ios/SFWBGeometryTypeInfo.m +++ b/sf-wkb-ios/SFWBGeometryTypeInfo.m @@ -18,7 +18,7 @@ @interface SFWBGeometryTypeInfo() /** * Geometry type */ -@property (nonatomic) enum SFGeometryType geometryType; +@property (nonatomic) SFGeometryType geometryType; /** * Has Z values flag @@ -34,7 +34,7 @@ @interface SFWBGeometryTypeInfo() @implementation SFWBGeometryTypeInfo --(instancetype) initWithCode: (int) geometryTypeCode andType: (enum SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM{ +-(instancetype) initWithCode: (int) geometryTypeCode andType: (SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM{ self = [super init]; if(self != nil){ self.geometryTypeCode = geometryTypeCode; @@ -49,7 +49,7 @@ -(int) geometryTypeCode{ return _geometryTypeCode; } --(enum SFGeometryType) geometryType{ +-(SFGeometryType) geometryType{ return _geometryType; } diff --git a/sf-wkb-ios/SFWBGeometryWriter.h b/sf-wkb-ios/SFWBGeometryWriter.h index 9fccca4..c45a775 100644 --- a/sf-wkb-ios/SFWBGeometryWriter.h +++ b/sf-wkb-ios/SFWBGeometryWriter.h @@ -6,14 +6,7 @@ // Copyright (c) 2015 NGA. All rights reserved. // -#import "SFByteWriter.h" -#import "SFMultiPoint.h" -#import "SFMultiLineString.h" -#import "SFMultiPolygon.h" -#import "SFCircularString.h" -#import "SFCompoundCurve.h" -#import "SFTIN.h" -#import "SFTriangle.h" +@import sf_ios; /** * Well Known Binary Geometry Writer diff --git a/sf-wkb-ios/SFWBGeometryWriter.m b/sf-wkb-ios/SFWBGeometryWriter.m index 1f04715..80fcb75 100644 --- a/sf-wkb-ios/SFWBGeometryWriter.m +++ b/sf-wkb-ios/SFWBGeometryWriter.m @@ -81,7 +81,7 @@ -(void) write: (SFGeometry *) geometry{ // Write the geometry type integer [self writeInt:[SFWBGeometryCodes wkbCodeFromGeometry:geometry]]; - enum SFGeometryType geometryType = geometry.geometryType; + SFGeometryType geometryType = geometry.geometryType; switch (geometryType) { @@ -127,7 +127,7 @@ -(void) write: (SFGeometry *) geometry{ [self writeTriangle:(SFTriangle *)geometry]; break; default: - [NSException raise:@"Geometry Not Supported" format:@"Geometry Type not supported: %d", geometryType]; + [NSException raise:@"Geometry Not Supported" format:@"Geometry Type not supported: %ld", geometryType]; } } diff --git a/sf-wkb-ios/sf-wkb-ios-Bridging-Header.h b/sf-wkb-ios/sf-wkb-ios-Bridging-Header.h deleted file mode 100644 index 163412c..0000000 --- a/sf-wkb-ios/sf-wkb-ios-Bridging-Header.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// sf-wkb-ios-Bridging-Header.h -// sf-wkb-ios -// -// Created by Brian Osborn on 11/23/15. -// Copyright © 2015 NGA. All rights reserved. -// - -#ifndef sf_wkb_ios_Bridging_Header_h -#define sf_wkb_ios_Bridging_Header_h - -#import "sf-ios-Bridging-Header.h" -#import "sf_wkb_ios.h" -#import "SFWBGeometryCodes.h" -#import "SFWBGeometryReader.h" -#import "SFWBGeometryTypeInfo.h" -#import "SFWBGeometryWriter.h" - -#endif /* sf_wkb_ios_Bridging_Header_h */ diff --git a/sf-wkb-ios/sf_wkb_ios.h b/sf-wkb-ios/sf_wkb_ios.h index c3a3fd2..51c752c 100644 --- a/sf-wkb-ios/sf_wkb_ios.h +++ b/sf-wkb-ios/sf_wkb_ios.h @@ -9,5 +9,9 @@ #ifndef sf_wkb_ios_sf_wkb_ios_h #define sf_wkb_ios_sf_wkb_ios_h +#import "SFWBGeometryCodes.h" +#import "SFWBGeometryReader.h" +#import "SFWBGeometryTypeInfo.h" +#import "SFWBGeometryWriter.h" #endif diff --git a/sf-wkb-ios/sf_wkb_ios.swift b/sf-wkb-ios/sf_wkb_ios.swift deleted file mode 100644 index d61549b..0000000 --- a/sf-wkb-ios/sf_wkb_ios.swift +++ /dev/null @@ -1,9 +0,0 @@ -// -// sf_wkb_ios.swift -// sf-wkb-ios -// -// Created by Brian Osborn on 10/25/23. -// Copyright © 2023 NGA. All rights reserved. -// - -import Foundation diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.h b/sf-wkb-iosTests/SFWBGeometryTestUtils.h index 548bf44..07ec980 100644 --- a/sf-wkb-iosTests/SFWBGeometryTestUtils.h +++ b/sf-wkb-iosTests/SFWBGeometryTestUtils.h @@ -6,12 +6,7 @@ // Copyright © 2015 NGA. All rights reserved. // -#import "SFGeometryEnvelope.h" -#import "SFMultiPoint.h" -#import "SFCircularString.h" -#import "SFCompoundCurve.h" -#import "SFTIN.h" -#import "SFTriangle.h" +@import sf_ios; @interface SFWBGeometryTestUtils : NSObject diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.m b/sf-wkb-iosTests/SFWBGeometryTestUtils.m index a2015c6..17d237a 100644 --- a/sf-wkb-iosTests/SFWBGeometryTestUtils.m +++ b/sf-wkb-iosTests/SFWBGeometryTestUtils.m @@ -6,12 +6,11 @@ // Copyright © 2015 NGA. All rights reserved. // +@import XCTest; +@import sf_ios; +@import sf_wkb_ios; #import "SFWBGeometryTestUtils.h" #import "SFWBTestUtils.h" -#import "SFByteWriter.h" -#import "SFWBGeometryWriter.h" -#import "SFWBGeometryReader.h" -#import "SFWBGeometryCodes.h" @implementation SFWBGeometryTestUtils @@ -64,7 +63,7 @@ +(void) compareGeometriesWithExpected: (SFGeometry *) expected andActual: (SFGeo }else{ [SFWBTestUtils assertNotNil:actual]; - enum SFGeometryType geometryType = expected.geometryType; + SFGeometryType geometryType = expected.geometryType; switch(geometryType){ case SF_GEOMETRY: [NSException raise:@"Unexpected Geometry Type" format:@"Unexpected Geometry Type of %@ which is abstract", [SFGeometryTypes name:geometryType]]; @@ -120,7 +119,7 @@ +(void) compareGeometriesWithExpected: (SFGeometry *) expected andActual: (SFGeo [self compareTriangleWithExpected:(SFTriangle *)expected andActual:(SFTriangle *)actual andDelta:delta]; break; default: - [NSException raise:@"Geometry Type Not Supported" format:@"Geometry Type not supported: %d", geometryType]; + [NSException raise:@"Geometry Type Not Supported" format:@"Geometry Type not supported: %ld", geometryType]; } } @@ -128,7 +127,8 @@ +(void) compareGeometriesWithExpected: (SFGeometry *) expected andActual: (SFGeo } +(void) compareBaseGeometryAttributesWithExpected: (SFGeometry *) expected andActual: (SFGeometry *) actual{ - [SFWBTestUtils assertEqualIntWithValue:expected.geometryType andValue2:actual.geometryType]; + XCTAssertEqual(expected.geometryType, actual.geometryType); + [SFWBTestUtils assertEqualBoolWithValue:expected.hasZ andValue2:actual.hasZ]; [SFWBTestUtils assertEqualBoolWithValue:expected.hasM andValue2:actual.hasM]; [SFWBTestUtils assertEqualIntWithValue:[SFWBGeometryCodes codeFromGeometry:expected] andValue2:[SFWBGeometryCodes codeFromGeometry:actual]]; diff --git a/sf-wkb-iosTests/SFWBReadmeTest.h b/sf-wkb-iosTests/SFWBReadmeTest.h index 68e0e82..121171e 100644 --- a/sf-wkb-iosTests/SFWBReadmeTest.h +++ b/sf-wkb-iosTests/SFWBReadmeTest.h @@ -6,7 +6,7 @@ // Copyright © 2020 NGA. All rights reserved. // -#import +@import XCTest; /** * README example tests diff --git a/sf-wkb-iosTests/SFWBReadmeTest.m b/sf-wkb-iosTests/SFWBReadmeTest.m index 07bd0c6..8a95a8f 100644 --- a/sf-wkb-iosTests/SFWBReadmeTest.m +++ b/sf-wkb-iosTests/SFWBReadmeTest.m @@ -5,11 +5,12 @@ // Created by Brian Osborn on 7/23/20. // Copyright © 2020 NGA. All rights reserved. // +@import Foundation; +@import sf_ios; +@import sf_wkb_ios; #import "SFWBReadmeTest.h" #import "SFWBTestUtils.h" -#import "SFWBGeometryReader.h" -#import "SFWBGeometryWriter.h" #import "SFWBGeometryTestUtils.h" @implementation SFWBReadmeTest @@ -47,7 +48,7 @@ -(SFGeometry *) readTester: (NSData *) data{ // NSData *data = ... SFGeometry *geometry = [SFWBGeometryReader readGeometryWithData:data]; - enum SFGeometryType geometryType = geometry.geometryType; +// SFGeometryType geometryType = geometry.geometryType; return geometry; } diff --git a/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift b/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift index 9fd334d..fb4c218 100644 --- a/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift +++ b/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift @@ -7,6 +7,7 @@ // import XCTest +import sf_wkb_ios /** * README example tests @@ -40,7 +41,7 @@ class SFWBSwiftReadmeTest: XCTestCase{ // var data: Data = ... let geometry: SFGeometry = SFWBGeometryReader.readGeometry(with: data) - let geometryType: SFGeometryType = geometry.geometryType +// let geometryType: SFGeometryType = geometry.geometryType return geometry } diff --git a/sf-wkb-iosTests/SFWBTestCase.m b/sf-wkb-iosTests/SFWBTestCase.m index acc9378..b0ac3a8 100644 --- a/sf-wkb-iosTests/SFWBTestCase.m +++ b/sf-wkb-iosTests/SFWBTestCase.m @@ -6,13 +6,11 @@ // Copyright © 2015 NGA. All rights reserved. // -#import +@import XCTest; +@import sf_ios; +@import sf_wkb_ios; #import "SFWBTestUtils.h" #import "SFWBGeometryTestUtils.h" -#import "SFWBGeometryCodes.h" -#import "SFExtendedGeometryCollection.h" -#import "SFPointFiniteFilter.h" -#import "SFWBGeometryReader.h" @interface SFWBTestCase : XCTestCase @@ -115,7 +113,7 @@ -(void) testMultiCurveWithLineStrings{ SFGeometry *geometry = [SFWBGeometryTestUtils readGeometryWithData:data]; [SFWBTestUtils assertTrue:[geometry isKindOfClass:[SFGeometryCollection class]]]; - [SFWBTestUtils assertEqualIntWithValue:geometry.geometryType andValue2:SF_GEOMETRYCOLLECTION]; + XCTAssertEqual(geometry.geometryType, SF_GEOMETRYCOLLECTION); SFGeometryCollection *multiCurve = (SFGeometryCollection *) geometry; [SFWBTestUtils assertEqualIntWithValue:2 andValue2:[multiCurve numGeometries]]; SFGeometry *geometry1 = [multiCurve geometryAtIndex:0]; @@ -134,8 +132,7 @@ -(void) testMultiCurveWithLineStrings{ [SFWBTestUtils assertEqualDoubleWithValue:44.2390383216843 andValue2:[point2.y doubleValue] andDelta:0.0000000000001]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWBTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; - + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); [self geometryTester:extendedMultiCurve withCompare:multiCurve andDoubleCompare:YES andDelta:0.0000000000001]; NSData *data2 = [SFWBGeometryTestUtils writeDataWithGeometry:extendedMultiCurve]; @@ -164,7 +161,7 @@ -(void) testMultiCurveWithCompoundCurve{ SFGeometry *geometry = [SFWBGeometryTestUtils readGeometryWithData:data]; [SFWBTestUtils assertTrue:[geometry isKindOfClass:[SFGeometryCollection class]]]; - [SFWBTestUtils assertEqualIntWithValue:geometry.geometryType andValue2:SF_GEOMETRYCOLLECTION]; + XCTAssertEqual(geometry.geometryType, SF_GEOMETRYCOLLECTION); SFGeometryCollection *multiCurve = (SFGeometryCollection *) geometry; [SFWBTestUtils assertEqualIntWithValue:1 andValue2:[multiCurve numGeometries]]; SFGeometry *geometry1 = [multiCurve geometryAtIndex:0]; @@ -184,7 +181,7 @@ -(void) testMultiCurveWithCompoundCurve{ [SFWBTestUtils assertEqualWithValue:[SFPoint pointWithXValue:3451418.006 andYValue:5481808.951] andValue2:[lineString2 pointAtIndex:1]]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWBTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); [self geometryTester:extendedMultiCurve withCompare:multiCurve]; @@ -203,8 +200,7 @@ -(void) testMultiCurve{ NSData *data = [SFWBGeometryTestUtils writeDataWithGeometry:multiCurve]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWBTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; - + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); NSData *extendedData = [SFWBGeometryTestUtils writeDataWithGeometry:extendedMultiCurve]; SFByteReader *byteReader = [[SFByteReader alloc] initWithData:[data subdataWithRange:NSMakeRange(1, 4)]]; @@ -220,9 +216,8 @@ -(void) testMultiCurve{ [SFWBTestUtils assertTrue:[geometry1 isKindOfClass:[SFGeometryCollection class]]]; [SFWBTestUtils assertTrue:[geometry2 isKindOfClass:[SFGeometryCollection class]]]; - [SFWBTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry1.geometryType]; - [SFWBTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry2.geometryType]; - + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry1.geometryType); + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry2.geometryType); [SFWBTestUtils assertEqualWithValue:multiCurve andValue2:geometry1]; [SFWBTestUtils assertEqualWithValue:geometry1 andValue2:geometry2]; @@ -244,7 +239,7 @@ -(void) testMultiSurface{ NSData *data = [SFWBGeometryTestUtils writeDataWithGeometry:multiSurface]; SFExtendedGeometryCollection *extendedMultiSurface = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiSurface]; - [SFWBTestUtils assertEqualIntWithValue:SF_MULTISURFACE andValue2:extendedMultiSurface.geometryType]; + XCTAssertEqual(SF_MULTISURFACE, extendedMultiSurface.geometryType); NSData *extendedData = [SFWBGeometryTestUtils writeDataWithGeometry:extendedMultiSurface]; @@ -261,9 +256,8 @@ -(void) testMultiSurface{ [SFWBTestUtils assertTrue:[geometry1 isKindOfClass:[SFGeometryCollection class]]]; [SFWBTestUtils assertTrue:[geometry2 isKindOfClass:[SFGeometryCollection class]]]; - [SFWBTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry1.geometryType]; - [SFWBTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry2.geometryType]; - + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry1.geometryType); + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry2.geometryType); [SFWBTestUtils assertEqualWithValue:multiSurface andValue2:geometry1]; [SFWBTestUtils assertEqualWithValue:geometry1 andValue2:geometry2]; @@ -308,7 +302,7 @@ -(void) testMultiPolygon25{ SFGeometry *geometry = [SFWBGeometryTestUtils readGeometryWithData:data]; [SFWBTestUtils assertTrue:[geometry isKindOfClass:[SFMultiPolygon class]]]; - [SFWBTestUtils assertEqualIntWithValue:SF_MULTIPOLYGON andValue2:geometry.geometryType]; + XCTAssertEqual(SF_MULTIPOLYGON, geometry.geometryType); SFMultiPolygon *multiPolygon = (SFMultiPolygon *) geometry; [SFWBTestUtils assertTrue:multiPolygon.hasZ]; [SFWBTestUtils assertFalse:multiPolygon.hasM]; @@ -548,7 +542,7 @@ +(void) finiteFilterTester: (NSData *) data andFilter: (SFPointFiniteFilter *) f [points addObjectsFromArray:[((SFPolygon *) geometry) ringAtIndex:0].points]; break; default: - [SFWBTestUtils fail:[NSString stringWithFormat:@"Unexpected test case: %u", geometry.geometryType]]; + [SFWBTestUtils fail:[NSString stringWithFormat:@"Unexpected test case: %ld", geometry.geometryType]]; } for(SFPoint *point in points){ diff --git a/sf-wkb-iosTests/SFWBTestUtils.h b/sf-wkb-iosTests/SFWBTestUtils.h index ee44f31..a2352b9 100644 --- a/sf-wkb-iosTests/SFWBTestUtils.h +++ b/sf-wkb-iosTests/SFWBTestUtils.h @@ -6,7 +6,7 @@ // Copyright © 2015 NGA. All rights reserved. // -#import +@import Foundation; @interface SFWBTestUtils : NSObject diff --git a/sf-wkb-iosTests/sf-wkb-iosTests-Bridging-Header.h b/sf-wkb-iosTests/sf-wkb-iosTests-Bridging-Header.h index dcc7b81..cbe9ccc 100644 --- a/sf-wkb-iosTests/sf-wkb-iosTests-Bridging-Header.h +++ b/sf-wkb-iosTests/sf-wkb-iosTests-Bridging-Header.h @@ -6,6 +6,5 @@ // Copyright © 2020 NGA. All rights reserved. // -#import "sf-wkb-ios-Bridging-Header.h" #import "SFWBTestUtils.h" #import "SFWBGeometryTestUtils.h" From 91636a105789388f47ac3777c7682e6b9ad55bda Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 11:54:08 -0400 Subject: [PATCH 2/9] Updated github workflow to use latest iPhone and checkout@v4 --- .github/workflows/build-test.yml | 8 ++++++-- .github/workflows/build.yml | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index eaa6e29..306643a 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -14,8 +14,12 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install run: pod install - name: Build & Test - run: xcodebuild test -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination 'platform=iOS Simulator,OS=latest,name=iPhone 14' + run: | + iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') + latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) + echo "latest_iphone: $latest_iphone" + xcodebuild test -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8f9aea..b4ab596 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,8 +13,12 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install run: pod install - name: Build - run: xcodebuild build-for-testing -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination 'platform=iOS Simulator,OS=latest,name=iPhone 14' + run: | + iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') + latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) + echo "latest_iphone: $latest_iphone" + xcodebuild build-for-testing -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" From 4bc64ed8d529522aba9b98d7c526b929bb8cb466 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 14:27:07 -0400 Subject: [PATCH 3/9] Updated to latest Xcode settings and 15.6 minimum target --- sf-wkb-ios.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sf-wkb-ios.xcodeproj/project.pbxproj b/sf-wkb-ios.xcodeproj/project.pbxproj index ecf273d..463d900 100644 --- a/sf-wkb-ios.xcodeproj/project.pbxproj +++ b/sf-wkb-ios.xcodeproj/project.pbxproj @@ -372,6 +372,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -434,6 +435,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -499,6 +501,7 @@ ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "sf-wkb-ios/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -526,6 +529,7 @@ ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "sf-wkb-ios/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", From 0fd320de014f121f1688f5d099345da777673289 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 16:52:15 -0400 Subject: [PATCH 4/9] Updated to iOS 15 --- Podfile | 2 +- sf-wkb-ios.xcodeproj/project.pbxproj | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Podfile b/Podfile index 2d57427..00f87a5 100644 --- a/Podfile +++ b/Podfile @@ -1,5 +1,5 @@ source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '12.0' +platform :ios, '15.0' target 'sf-wkb-ios' do # pod 'sf-ios', '5.0.0' diff --git a/sf-wkb-ios.xcodeproj/project.pbxproj b/sf-wkb-ios.xcodeproj/project.pbxproj index 463d900..aa0977a 100644 --- a/sf-wkb-ios.xcodeproj/project.pbxproj +++ b/sf-wkb-ios.xcodeproj/project.pbxproj @@ -420,7 +420,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = ""; @@ -476,7 +476,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = ""; SDKROOT = iphoneos; From ca1cafbba3c0ae4e0c16e5bac082329a68c84f54 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 5 May 2025 19:52:43 -0400 Subject: [PATCH 5/9] Created initial Swift Package. --- Package.resolved | 15 ++++++++ Package.swift | 34 +++++++++++++++++++ sf-wkb-ios/Info.plist | 24 ------------- sf-wkb-ios/SFWBGeometryCodes.m | 2 +- sf-wkb-ios/SFWBGeometryReader.m | 4 +-- sf-wkb-ios/SFWBGeometryTypeInfo.m | 2 +- sf-wkb-ios/SFWBGeometryWriter.m | 4 +-- .../SimpleFeaturesWKB}/SFWBGeometryCodes.h | 3 +- .../SimpleFeaturesWKB}/SFWBGeometryReader.h | 5 +-- .../SimpleFeaturesWKB}/SFWBGeometryTypeInfo.h | 2 +- .../SimpleFeaturesWKB}/SFWBGeometryWriter.h | 3 +- .../SimpleFeaturesWKB/SimpleFeaturesWKB.h | 17 ++++++++++ sf-wkb-ios/sf-wkb-ios-Prefix.pch | 6 ---- sf-wkb-ios/sf_wkb_ios.h | 17 ---------- sf-wkb-iosTests/SFWBGeometryTestUtils.h | 3 +- sf-wkb-iosTests/SFWBGeometryTestUtils.m | 5 +-- sf-wkb-iosTests/SFWBReadmeTest.m | 4 +-- sf-wkb-iosTests/SFWBTestCase.m | 5 +-- 18 files changed, 90 insertions(+), 65 deletions(-) create mode 100644 Package.resolved create mode 100644 Package.swift delete mode 100644 sf-wkb-ios/Info.plist rename sf-wkb-ios/{ => include/SimpleFeaturesWKB}/SFWBGeometryCodes.h (96%) rename sf-wkb-ios/{ => include/SimpleFeaturesWKB}/SFWBGeometryReader.h (99%) rename sf-wkb-ios/{ => include/SimpleFeaturesWKB}/SFWBGeometryTypeInfo.h (95%) rename sf-wkb-ios/{ => include/SimpleFeaturesWKB}/SFWBGeometryWriter.h (98%) create mode 100644 sf-wkb-ios/include/SimpleFeaturesWKB/SimpleFeaturesWKB.h delete mode 100644 sf-wkb-ios/sf-wkb-ios-Prefix.pch delete mode 100644 sf-wkb-ios/sf_wkb_ios.h diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..8d768bd --- /dev/null +++ b/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "895c3e47845b43751f9a634840b8164ed939509f3eae79dc8342a2581e74d2e7", + "pins" : [ + { + "identity" : "simple-features-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ngageoint/simple-features-ios", + "state" : { + "branch" : "psolt/v5-NS_ENUM_Package", + "revision" : "7672b0950afa0fe7d9b26b5b369c33161b13b387" + } + } + ], + "version" : 3 +} diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..de61024 --- /dev/null +++ b/Package.swift @@ -0,0 +1,34 @@ +// swift-tools-version: 5.10 + +import PackageDescription + +let package = Package( + name: "SimpleFeaturesWKB", + products: [ + .library( + name: "SimpleFeaturesWKB", + targets: ["SimpleFeaturesWKB"]), + ], + dependencies: [ + .package(url: "https://github.com/ngageoint/simple-features-ios", branch: "psolt/v5-NS_ENUM_Package"), // FIXME: Update to published release (5.0.0 version) + ], + targets: [ + .target( + name: "SimpleFeaturesWKB", + dependencies: [ + .product(name: "SimpleFeatures", package: "simple-features-ios") + ], + path: "sf-wkb-ios", + publicHeadersPath: "include" + ), + .testTarget( + name: "SimpleFeaturesWKBTests", + dependencies: ["SimpleFeaturesWKB"], + path: "sf-wkb-iosTests", + exclude: [ + "SFWBSwiftReadmeTest.swift" + ] + + ), + ] +) diff --git a/sf-wkb-ios/Info.plist b/sf-wkb-ios/Info.plist deleted file mode 100644 index ae6787f..0000000 --- a/sf-wkb-ios/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/sf-wkb-ios/SFWBGeometryCodes.m b/sf-wkb-ios/SFWBGeometryCodes.m index 9ef7e6e..aea6ebc 100644 --- a/sf-wkb-ios/SFWBGeometryCodes.m +++ b/sf-wkb-ios/SFWBGeometryCodes.m @@ -6,7 +6,7 @@ // Copyright © 2018 NGA. All rights reserved. // -#import "SFWBGeometryCodes.h" +#import @implementation SFWBGeometryCodes diff --git a/sf-wkb-ios/SFWBGeometryReader.m b/sf-wkb-ios/SFWBGeometryReader.m index a6221fb..e0bea98 100644 --- a/sf-wkb-ios/SFWBGeometryReader.m +++ b/sf-wkb-ios/SFWBGeometryReader.m @@ -6,8 +6,8 @@ // Copyright (c) 2015 NGA. All rights reserved. // -#import "SFWBGeometryReader.h" -#import "SFWBGeometryCodes.h" +#import +#import @interface SFWBGeometryReader() diff --git a/sf-wkb-ios/SFWBGeometryTypeInfo.m b/sf-wkb-ios/SFWBGeometryTypeInfo.m index fdd2c14..3d3917d 100644 --- a/sf-wkb-ios/SFWBGeometryTypeInfo.m +++ b/sf-wkb-ios/SFWBGeometryTypeInfo.m @@ -6,7 +6,7 @@ // Copyright © 2018 NGA. All rights reserved. // -#import "SFWBGeometryTypeInfo.h" +#import @interface SFWBGeometryTypeInfo() diff --git a/sf-wkb-ios/SFWBGeometryWriter.m b/sf-wkb-ios/SFWBGeometryWriter.m index 80fcb75..c75f3c5 100644 --- a/sf-wkb-ios/SFWBGeometryWriter.m +++ b/sf-wkb-ios/SFWBGeometryWriter.m @@ -6,8 +6,8 @@ // Copyright (c) 2015 NGA. All rights reserved. // -#import "SFWBGeometryWriter.h" -#import "SFWBGeometryCodes.h" +#import +#import @interface SFWBGeometryWriter() diff --git a/sf-wkb-ios/SFWBGeometryCodes.h b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryCodes.h similarity index 96% rename from sf-wkb-ios/SFWBGeometryCodes.h rename to sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryCodes.h index e71a1c2..1631307 100644 --- a/sf-wkb-ios/SFWBGeometryCodes.h +++ b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryCodes.h @@ -6,7 +6,8 @@ // Copyright © 2018 NGA. All rights reserved. // -@import sf_ios; +#import +#import /** * Geometry Code utilities to convert between geometry attributes and geometry diff --git a/sf-wkb-ios/SFWBGeometryReader.h b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryReader.h similarity index 99% rename from sf-wkb-ios/SFWBGeometryReader.h rename to sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryReader.h index 10ff852..0d9a615 100644 --- a/sf-wkb-ios/SFWBGeometryReader.h +++ b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryReader.h @@ -6,8 +6,9 @@ // Copyright (c) 2015 NGA. All rights reserved. // -@import sf_ios; -#import "SFWBGeometryTypeInfo.h" +#import +#import +#import /** * Well Known Binary Geometry Reader diff --git a/sf-wkb-ios/SFWBGeometryTypeInfo.h b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryTypeInfo.h similarity index 95% rename from sf-wkb-ios/SFWBGeometryTypeInfo.h rename to sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryTypeInfo.h index 344e9f1..ab4f8a4 100644 --- a/sf-wkb-ios/SFWBGeometryTypeInfo.h +++ b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryTypeInfo.h @@ -6,7 +6,7 @@ // Copyright © 2018 NGA. All rights reserved. // -@import sf_ios; +#include /** * Geometry type info diff --git a/sf-wkb-ios/SFWBGeometryWriter.h b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryWriter.h similarity index 98% rename from sf-wkb-ios/SFWBGeometryWriter.h rename to sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryWriter.h index c45a775..432b5df 100644 --- a/sf-wkb-ios/SFWBGeometryWriter.h +++ b/sf-wkb-ios/include/SimpleFeaturesWKB/SFWBGeometryWriter.h @@ -6,7 +6,8 @@ // Copyright (c) 2015 NGA. All rights reserved. // -@import sf_ios; +#import +#import /** * Well Known Binary Geometry Writer diff --git a/sf-wkb-ios/include/SimpleFeaturesWKB/SimpleFeaturesWKB.h b/sf-wkb-ios/include/SimpleFeaturesWKB/SimpleFeaturesWKB.h new file mode 100644 index 0000000..a991256 --- /dev/null +++ b/sf-wkb-ios/include/SimpleFeaturesWKB/SimpleFeaturesWKB.h @@ -0,0 +1,17 @@ +// +// SimpleFeaturesWKB.h +// sf-wkb-ios +// +// Created by Brian Osborn on 9/1/15. +// Copyright (c) 2015 NGA. All rights reserved. +// + +#ifndef sf_wkb_ios_sf_wkb_ios_h +#define sf_wkb_ios_sf_wkb_ios_h + +#import +#import +#import +#import + +#endif diff --git a/sf-wkb-ios/sf-wkb-ios-Prefix.pch b/sf-wkb-ios/sf-wkb-ios-Prefix.pch deleted file mode 100644 index fbe8d11..0000000 --- a/sf-wkb-ios/sf-wkb-ios-Prefix.pch +++ /dev/null @@ -1,6 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - diff --git a/sf-wkb-ios/sf_wkb_ios.h b/sf-wkb-ios/sf_wkb_ios.h deleted file mode 100644 index 51c752c..0000000 --- a/sf-wkb-ios/sf_wkb_ios.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// sf-wkb-ios.h -// sf-wkb-ios -// -// Created by Brian Osborn on 9/1/15. -// Copyright (c) 2015 NGA. All rights reserved. -// - -#ifndef sf_wkb_ios_sf_wkb_ios_h -#define sf_wkb_ios_sf_wkb_ios_h - -#import "SFWBGeometryCodes.h" -#import "SFWBGeometryReader.h" -#import "SFWBGeometryTypeInfo.h" -#import "SFWBGeometryWriter.h" - -#endif diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.h b/sf-wkb-iosTests/SFWBGeometryTestUtils.h index 07ec980..04223e8 100644 --- a/sf-wkb-iosTests/SFWBGeometryTestUtils.h +++ b/sf-wkb-iosTests/SFWBGeometryTestUtils.h @@ -6,7 +6,8 @@ // Copyright © 2015 NGA. All rights reserved. // -@import sf_ios; +@import SimpleFeatures; +@import SimpleFeaturesWKB; @interface SFWBGeometryTestUtils : NSObject diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.m b/sf-wkb-iosTests/SFWBGeometryTestUtils.m index 17d237a..213e2ee 100644 --- a/sf-wkb-iosTests/SFWBGeometryTestUtils.m +++ b/sf-wkb-iosTests/SFWBGeometryTestUtils.m @@ -7,8 +7,9 @@ // @import XCTest; -@import sf_ios; -@import sf_wkb_ios; +@import SimpleFeatures; +@import SimpleFeaturesWKB; + #import "SFWBGeometryTestUtils.h" #import "SFWBTestUtils.h" diff --git a/sf-wkb-iosTests/SFWBReadmeTest.m b/sf-wkb-iosTests/SFWBReadmeTest.m index 8a95a8f..05eb7de 100644 --- a/sf-wkb-iosTests/SFWBReadmeTest.m +++ b/sf-wkb-iosTests/SFWBReadmeTest.m @@ -6,8 +6,8 @@ // Copyright © 2020 NGA. All rights reserved. // @import Foundation; -@import sf_ios; -@import sf_wkb_ios; +@import SimpleFeatures; +@import SimpleFeaturesWKB; #import "SFWBReadmeTest.h" #import "SFWBTestUtils.h" diff --git a/sf-wkb-iosTests/SFWBTestCase.m b/sf-wkb-iosTests/SFWBTestCase.m index b0ac3a8..c49b979 100644 --- a/sf-wkb-iosTests/SFWBTestCase.m +++ b/sf-wkb-iosTests/SFWBTestCase.m @@ -7,8 +7,9 @@ // @import XCTest; -@import sf_ios; -@import sf_wkb_ios; +@import SimpleFeatures; +@import SimpleFeaturesWKB; + #import "SFWBTestUtils.h" #import "SFWBGeometryTestUtils.h" From 13615cb5486198f481beeda54edcfac6cdfb2c7a Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 5 May 2025 19:58:54 -0400 Subject: [PATCH 6/9] Updated tests to build both Swift and Objective-C tests with shared TestUtils logic --- Package.swift | 26 ++++++++++++++----- .../SFWBGeometryTestUtils.h | 0 .../SFWBGeometryTestUtils.m | 0 .../SFWBTestUtils.h | 0 .../SFWBTestUtils.m | 0 .../SFWBSwiftReadmeTest.swift | 4 ++- 6 files changed, 23 insertions(+), 7 deletions(-) rename {sf-wkb-iosTests => TestUtils}/SFWBGeometryTestUtils.h (100%) rename {sf-wkb-iosTests => TestUtils}/SFWBGeometryTestUtils.m (100%) rename {sf-wkb-iosTests => TestUtils}/SFWBTestUtils.h (100%) rename {sf-wkb-iosTests => TestUtils}/SFWBTestUtils.m (100%) rename {sf-wkb-iosTests => sf-wkb-iosTests-swift}/SFWBSwiftReadmeTest.swift (96%) diff --git a/Package.swift b/Package.swift index de61024..d3bcdf9 100644 --- a/Package.swift +++ b/Package.swift @@ -10,7 +10,8 @@ let package = Package( targets: ["SimpleFeaturesWKB"]), ], dependencies: [ - .package(url: "https://github.com/ngageoint/simple-features-ios", branch: "psolt/v5-NS_ENUM_Package"), // FIXME: Update to published release (5.0.0 version) + .package(url: "https://github.com/ngageoint/simple-features-ios", branch: "psolt/v5-NS_ENUM_Package"), + // FIXME: Update to published release (5.0.0 version) ], targets: [ .target( @@ -23,12 +24,25 @@ let package = Package( ), .testTarget( name: "SimpleFeaturesWKBTests", + dependencies: [ + "SimpleFeaturesWKB", + "TestUtils" + ], + path: "sf-wkb-iosTests" + ), + .testTarget( + name: "SimpleFeaturesWKBTestsSwift", + dependencies: [ + "SimpleFeaturesWKB", + "TestUtils" + ], + path: "sf-wkb-iosTests-swift" + ), + .target( + name: "TestUtils", // Shared test code dependencies: ["SimpleFeaturesWKB"], - path: "sf-wkb-iosTests", - exclude: [ - "SFWBSwiftReadmeTest.swift" - ] - + path: "TestUtils", + publicHeadersPath: "" ), ] ) diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.h b/TestUtils/SFWBGeometryTestUtils.h similarity index 100% rename from sf-wkb-iosTests/SFWBGeometryTestUtils.h rename to TestUtils/SFWBGeometryTestUtils.h diff --git a/sf-wkb-iosTests/SFWBGeometryTestUtils.m b/TestUtils/SFWBGeometryTestUtils.m similarity index 100% rename from sf-wkb-iosTests/SFWBGeometryTestUtils.m rename to TestUtils/SFWBGeometryTestUtils.m diff --git a/sf-wkb-iosTests/SFWBTestUtils.h b/TestUtils/SFWBTestUtils.h similarity index 100% rename from sf-wkb-iosTests/SFWBTestUtils.h rename to TestUtils/SFWBTestUtils.h diff --git a/sf-wkb-iosTests/SFWBTestUtils.m b/TestUtils/SFWBTestUtils.m similarity index 100% rename from sf-wkb-iosTests/SFWBTestUtils.m rename to TestUtils/SFWBTestUtils.m diff --git a/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift b/sf-wkb-iosTests-swift/SFWBSwiftReadmeTest.swift similarity index 96% rename from sf-wkb-iosTests/SFWBSwiftReadmeTest.swift rename to sf-wkb-iosTests-swift/SFWBSwiftReadmeTest.swift index fb4c218..634ad43 100644 --- a/sf-wkb-iosTests/SFWBSwiftReadmeTest.swift +++ b/sf-wkb-iosTests-swift/SFWBSwiftReadmeTest.swift @@ -7,7 +7,9 @@ // import XCTest -import sf_wkb_ios +import SimpleFeatures +import SimpleFeaturesWKB +import TestUtils /** * README example tests From 80ea308807fdcca91bad0658739145fcb8d99479 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 5 May 2025 20:11:51 -0400 Subject: [PATCH 7/9] Updated workflows --- .github/workflows/build-test.yml | 25 ------------------------- .github/workflows/build.yml | 11 ++++------- README.md | 2 +- 3 files changed, 5 insertions(+), 33 deletions(-) delete mode 100644 .github/workflows/build-test.yml diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml deleted file mode 100644 index 306643a..0000000 --- a/.github/workflows/build-test.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Build & Test - -on: - push: - branches: - - master - pull_request: - -jobs: - - build: - - runs-on: macOS-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - name: Install - run: pod install - - name: Build & Test - run: | - iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') - latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) - echo "latest_iphone: $latest_iphone" - xcodebuild test -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4ab596..30ffd9a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,7 @@ on: push: branches-ignore: - master + pull_request: jobs: @@ -14,11 +15,7 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - - name: Install - run: pod install - name: Build - run: | - iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') - latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) - echo "latest_iphone: $latest_iphone" - xcodebuild build-for-testing -workspace sf-wkb-ios.xcworkspace -scheme sf-wkb-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" + run: swift build + - name: Test + run: swift test diff --git a/README.md b/README.md index 9bdfa1b..5f3fd49 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ View the latest [Appledoc](http://ngageoint.github.io/simple-features-wkb-ios/do // NSData *data = ... SFGeometry *geometry = [SFWBGeometryReader readGeometryWithData:data]; -enum SFGeometryType geometryType = geometry.geometryType; +SFGeometryType geometryType = geometry.geometryType; ``` From e651bb3ba8f930208b7c06da641ce365a4ddd7d0 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Tue, 6 May 2025 12:52:47 -0400 Subject: [PATCH 8/9] Updated readme and changelog --- CHANGELOG.md | 6 ++++-- README.md | 41 +++++++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42603f2..e419e10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,11 @@ Adheres to [Semantic Versioning](http://semver.org/). --- -## 4.1.5 (TBD) +## 5.0.0 (5-6-2025) -* TBD +* Integrates sf-ios 5.0.0 (SimpleFeatures) breaking code chanegs for NS_ENUM. +* Updates existing enums to NS_ENUM for Swift for Objective-C interoperability. +* Adds Swift Package support and removes Cocoapods support (since it's deprecated). ## [4.1.4](https://github.com/ngageoint/simple-features-wkb-ios/releases/tag/4.1.4) (04-08-2024) diff --git a/README.md b/README.md index 5f3fd49..2fbec06 100644 --- a/README.md +++ b/README.md @@ -40,44 +40,49 @@ NSData *data = [SFWBGeometryWriter writeGeometry:geometry]; ### Build ### -[![Build & Test](https://github.com/ngageoint/simple-features-wkb-ios/workflows/Build%20&%20Test/badge.svg)](https://github.com/ngageoint/simple-features-wkb-ios/actions/workflows/build-test.yml) +[![Build](https://github.com/ngageoint/simple-features-wkb-ios/actions/workflows/build.yml/badge.svg)](https://github.com/ngageoint/simple-features-wkb-ios/actions/workflows/build.yml) -Build this repository using Xcode and/or CocoaPods: +Build this repository using SPM: - pod repo update - pod install + swift build -Open sf-wkb-ios.xcworkspace in Xcode or build from command line: +Open the Swift Package in Xcode: - xcodebuild -workspace 'sf-wkb-ios.xcworkspace' -scheme sf-wkb-ios build + open Package.swift Run tests from Xcode or from command line: - xcodebuild test -workspace 'sf-wkb-ios.xcworkspace' -scheme sf-wkb-ios -destination 'platform=iOS Simulator,name=iPhone 15' + swift test ### Include Library ### -Include this repository by specifying it in a Podfile using a supported option. +Add a package dependency version: -Pull from [CocoaPods](https://cocoapods.org/pods/sf-wkb-ios): + .package(url: "https://github.com/ngageoint/simple-features-wkb-ios", from: "5.0.0"), - pod 'sf-wkb-ios', '~> 4.1.4' + # Or specific branch: -Pull from GitHub: + .package(url: "https://github.com/ngageoint/simple-features-wkb-ios", branch: "release/5.0.0"), + + # Or as a local dependency: - pod 'sf-wkb-ios', :git => 'https://github.com/ngageoint/simple-features-wkb-ios.git', :branch => 'master' - pod 'sf-wkb-ios', :git => 'https://github.com/ngageoint/simple-features-wkb-ios.git', :tag => '4.1.4' + .package(name: "simple-features-wkb-ios", path: "../simple-features-wkb-ios"), -Include as local project: +Use it in a target: - pod 'sf-wkb-ios', :path => '../simple-features-wkb-ios' + .target( + name: "MyLibrary", + dependencies: [ + .product(name: "SimpleFeaturesWKB", package: "simple-features-wkb-ios") + ] + ) ### Swift ### -To use from Swift, import the sf-wkb-ios bridging header from the Swift project's bridging header - - #import "sf-wkb-ios-Bridging-Header.h" +To use from Swift, import the framework: + import SimpleFeaturesWKB + #### Read #### ```swift From 5ab85d77420e91eb59d69ef81c51bd13d1150f21 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Tue, 6 May 2025 13:05:28 -0400 Subject: [PATCH 9/9] Updated SPM versiongs --- Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Package.swift b/Package.swift index d3bcdf9..dc768fc 100644 --- a/Package.swift +++ b/Package.swift @@ -4,6 +4,7 @@ import PackageDescription let package = Package( name: "SimpleFeaturesWKB", + platforms: [.macOS(.v11), .iOS(.v13)], products: [ .library( name: "SimpleFeaturesWKB",