From 394e47d91a4f22cfd2f615bdc0f471d0fae63a74 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 12:03:13 -0400 Subject: [PATCH 1/3] Updating to sf_ios 5.0.0 for NS_ENUM Objective-C and Swift interoperability. Updated versions to 3.0.0 --- CHANGELOG.md | 4 ++-- Podfile | 3 ++- README.md | 6 +++--- docs/release.txt | 2 +- sf-wkt-ios.podspec | 4 ++-- sf-wkt-ios/SFWTGeometryReader.h | 4 ++-- sf-wkt-ios/SFWTGeometryReader.m | 10 +++++----- sf-wkt-ios/SFWTGeometryTypeInfo.h | 4 ++-- sf-wkt-ios/SFWTGeometryTypeInfo.m | 6 +++--- sf-wkt-ios/SFWTGeometryWriter.m | 4 ++-- sf-wkt-iosTests/SFWTGeometryTestUtils.m | 4 ++-- sf-wkt-iosTests/SFWTReadmeTest.m | 2 +- 12 files changed, 27 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index abedaa7..ca2f301 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,9 @@ Adheres to [Semantic Versioning](http://semver.org/). --- -## 2.1.5 (TBD) +## 3.0.0 -* TBD +* sf-ios 5.0.0 with NS_ENUM support for Objective-C and Swift interoperability. ## [2.1.4](https://github.com/ngageoint/simple-features-wkt-ios/releases/tag/2.1.4) (04-08-2024) diff --git a/Podfile b/Podfile index fb9e5c2..68f06cc 100644 --- a/Podfile +++ b/Podfile @@ -2,7 +2,8 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '12.0' target 'sf-wkt-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-wkt-iosTests' do inherit! :search_paths diff --git a/README.md b/README.md index 39a12c2..d4c8373 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Open sf-wkt-ios.xcworkspace in Xcode or build from command line: Run tests from Xcode or from command line: - xcodebuild test -workspace 'sf-wkt-ios.xcworkspace' -scheme sf-wkt-ios -destination 'platform=iOS Simulator,name=iPhone 15' + xcodebuild test -workspace 'sf-wkt-ios.xcworkspace' -scheme sf-wkt-ios -destination 'platform=iOS Simulator,name=iPhone 16' ### Include Library ### @@ -61,12 +61,12 @@ Include this repository by specifying it in a Podfile using a supported option. Pull from [CocoaPods](https://cocoapods.org/pods/sf-wkt-ios): - pod 'sf-wkt-ios', '~> 2.1.4' + pod 'sf-wkt-ios', '~> 3.0.0' Pull from GitHub: pod 'sf-wkt-ios', :git => 'https://github.com/ngageoint/simple-features-wkt-ios.git', :branch => 'master' - pod 'sf-wkt-ios', :git => 'https://github.com/ngageoint/simple-features-wkt-ios.git', :tag => '2.1.4' + pod 'sf-wkt-ios', :git => 'https://github.com/ngageoint/simple-features-wkt-ios.git', :tag => '3.0.0' Include as local project: diff --git a/docs/release.txt b/docs/release.txt index 545f164..e8b10fd 100644 --- a/docs/release.txt +++ b/docs/release.txt @@ -5,7 +5,7 @@ xcodebuild -workspace 'sf-wkt-ios.xcworkspace' -scheme sf-wkt-ios build Xcode Test: -xcodebuild test -workspace 'sf-wkt-ios.xcworkspace' -scheme sf-wkt-ios -destination 'platform=iOS Simulator,name=iPhone 15' +xcodebuild test -workspace 'sf-wkt-ios.xcworkspace' -scheme sf-wkt-ios -destination 'platform=iOS Simulator,name=iPhone 16' CocoaPods Local Lint: diff --git a/sf-wkt-ios.podspec b/sf-wkt-ios.podspec index b1e5a83..680f4f3 100644 --- a/sf-wkt-ios.podspec +++ b/sf-wkt-ios.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'sf-wkt-ios' - s.version = '2.1.5' + s.version = '3.0.0' s.license = {:type => 'MIT', :file => 'LICENSE' } s.summary = 'iOS SDK for Simple Features Well-Known Text' s.homepage = 'https://github.com/ngageoint/simple-features-wkt-ios' @@ -17,5 +17,5 @@ Pod::Spec.new do |s| s.frameworks = 'Foundation' - s.dependency 'sf-ios', '~> 4.1.4' + s.dependency 'sf-ios', '5.0.0' end diff --git a/sf-wkt-ios/SFWTGeometryReader.h b/sf-wkt-ios/SFWTGeometryReader.h index b95a301..e6ed6f9 100644 --- a/sf-wkt-ios/SFWTGeometryReader.h +++ b/sf-wkt-ios/SFWTGeometryReader.h @@ -127,7 +127,7 @@ * * @return geometry */ --(SFGeometry *) readWithFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType; +-(SFGeometry *) readWithFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType; /** * Read the geometry type info @@ -480,7 +480,7 @@ * * @return geometry */ -+(SFGeometry *) readGeometryWithReader: (SFTextReader *) reader andFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType; ++(SFGeometry *) readGeometryWithReader: (SFTextReader *) reader andFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType; /** * Read the geometry type info diff --git a/sf-wkt-ios/SFWTGeometryReader.m b/sf-wkt-ios/SFWTGeometryReader.m index e8e3389..f0d5959 100644 --- a/sf-wkt-ios/SFWTGeometryReader.m +++ b/sf-wkt-ios/SFWTGeometryReader.m @@ -68,7 +68,7 @@ -(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{ SFGeometry *geometry = nil; @@ -77,7 +77,7 @@ -(SFGeometry *) readWithFilter: (NSObject *) filter inType: (e if(geometryTypeInfo != nil){ - enum SFGeometryType geometryType = [geometryTypeInfo geometryType]; + SFGeometryType geometryType = [geometryTypeInfo geometryType]; BOOL hasZ = [geometryTypeInfo hasZ]; BOOL hasM = [geometryTypeInfo hasM]; @@ -167,7 +167,7 @@ -(SFWTGeometryTypeInfo *) readGeometryType{ BOOL hasM = NO; // Determine the geometry type - enum SFGeometryType geometryType = [SFGeometryTypes fromName:geometryTypeValue]; + SFGeometryType geometryType = [SFGeometryTypes fromName:geometryTypeValue]; // If not found, check if the geometry type has Z and/or M suffix if (geometryType == SF_NONE) { @@ -702,7 +702,7 @@ +(SFGeometry *) readGeometryWithReader: (SFTextReader *) reader andFilter: (NSOb return [self readGeometryWithReader:reader andFilter:filter inType:SF_NONE andExpectedType:expectedType]; } -+(SFGeometry *) readGeometryWithReader: (SFTextReader *) reader andFilter: (NSObject *) filter inType: (enum SFGeometryType) containingType andExpectedType: (Class) expectedType{ ++(SFGeometry *) readGeometryWithReader: (SFTextReader *) reader andFilter: (NSObject *) filter inType: (SFGeometryType) containingType andExpectedType: (Class) expectedType{ SFWTGeometryReader *geometryReader = [[SFWTGeometryReader alloc] initWithReader:reader]; return [geometryReader readWithFilter:filter inType:containingType andExpectedType:expectedType]; } @@ -950,7 +950,7 @@ +(BOOL) isCommaOrRightParenthesis: (SFTextReader *) reader{ * 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-wkt-ios/SFWTGeometryTypeInfo.h b/sf-wkt-ios/SFWTGeometryTypeInfo.h index 46e589f..22e98b7 100644 --- a/sf-wkt-ios/SFWTGeometryTypeInfo.h +++ b/sf-wkt-ios/SFWTGeometryTypeInfo.h @@ -23,14 +23,14 @@ * @param hasM * has m */ --(instancetype) initWithType: (enum SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM; +-(instancetype) initWithType: (SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM; /** * Get the geometry type * * @return geometry type */ --(enum SFGeometryType) geometryType; +-(SFGeometryType) geometryType; /** * Has z values diff --git a/sf-wkt-ios/SFWTGeometryTypeInfo.m b/sf-wkt-ios/SFWTGeometryTypeInfo.m index 29169e8..7319169 100644 --- a/sf-wkt-ios/SFWTGeometryTypeInfo.m +++ b/sf-wkt-ios/SFWTGeometryTypeInfo.m @@ -13,7 +13,7 @@ @interface SFWTGeometryTypeInfo() /** * Geometry type */ -@property (nonatomic) enum SFGeometryType geometryType; +@property (nonatomic) SFGeometryType geometryType; /** * Has Z values flag @@ -29,7 +29,7 @@ @interface SFWTGeometryTypeInfo() @implementation SFWTGeometryTypeInfo --(instancetype) initWithType: (enum SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM{ +-(instancetype) initWithType: (SFGeometryType) geometryType andHasZ: (BOOL) hasZ andHasM: (BOOL) hasM{ self = [super init]; if(self != nil){ self.geometryType = geometryType; @@ -39,7 +39,7 @@ -(instancetype) initWithType: (enum SFGeometryType) geometryType andHasZ: (BOOL) return self; } --(enum SFGeometryType) geometryType{ +-(SFGeometryType) geometryType{ return _geometryType; } diff --git a/sf-wkt-ios/SFWTGeometryWriter.m b/sf-wkt-ios/SFWTGeometryWriter.m index 9c652cc..2416e6b 100644 --- a/sf-wkt-ios/SFWTGeometryWriter.m +++ b/sf-wkt-ios/SFWTGeometryWriter.m @@ -69,7 +69,7 @@ -(void) write: (SFGeometry *) geometry{ [_text appendString:@" "]; } - enum SFGeometryType geometryType = geometry.geometryType; + SFGeometryType geometryType = geometry.geometryType; switch (geometryType) { @@ -127,7 +127,7 @@ -(void) write: (SFGeometry *) geometry{ } -(NSString *) name: (SFGeometry *) geometry{ - enum SFGeometryType type = geometry.geometryType; + SFGeometryType type = geometry.geometryType; if(![geometry isEmpty]){ switch (type){ case SF_MULTILINESTRING: diff --git a/sf-wkt-iosTests/SFWTGeometryTestUtils.m b/sf-wkt-iosTests/SFWTGeometryTestUtils.m index c252c51..286e63b 100644 --- a/sf-wkt-iosTests/SFWTGeometryTestUtils.m +++ b/sf-wkt-iosTests/SFWTGeometryTestUtils.m @@ -62,7 +62,7 @@ +(void) compareGeometriesWithExpected: (SFGeometry *) expected andActual: (SFGeo }else{ [SFWTTestUtils 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]]; @@ -317,7 +317,7 @@ +(SFGeometry *) readGeometryWithText: (NSString *) text andValidateZM: (BOOL) va SFTextReader *reader = [[SFTextReader alloc] initWithText:text]; SFWTGeometryTypeInfo *geometryTypeInfo = [SFWTGeometryReader readGeometryTypeWithReader:reader]; - enum SFGeometryType expectedGeometryType = [geometryTypeInfo geometryType]; + SFGeometryType expectedGeometryType = [geometryTypeInfo geometryType]; switch (expectedGeometryType) { case SF_MULTICURVE: case SF_MULTISURFACE: diff --git a/sf-wkt-iosTests/SFWTReadmeTest.m b/sf-wkt-iosTests/SFWTReadmeTest.m index cf56849..04c8ffa 100644 --- a/sf-wkt-iosTests/SFWTReadmeTest.m +++ b/sf-wkt-iosTests/SFWTReadmeTest.m @@ -45,7 +45,7 @@ -(SFGeometry *) readTester: (NSString *) text{ // NSString *text = ... SFGeometry *geometry = [SFWTGeometryReader readGeometryWithText:text]; - enum SFGeometryType geometryType = geometry.geometryType; + SFGeometryType geometryType = geometry.geometryType; return geometry; } From 1002f4887db9d2bfa1d6474b37880c99492619e4 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 14:14:03 -0400 Subject: [PATCH 2/3] Updated imports from NS_ENUM changes. Updated tests and fixed warnigns. Updated github workflow files. --- .github/workflows/build-test.yml | 6 +++- .github/workflows/build.yml | 8 +++-- sf-wkt-ios.xcodeproj/project.pbxproj | 24 +++++-------- .../xcschemes/sf-wkt-ios.xcscheme | 2 +- sf-wkt-ios/SFWTGeometryReader.h | 10 +----- sf-wkt-ios/SFWTGeometryTypeInfo.h | 3 +- sf-wkt-ios/SFWTGeometryWriter.h | 8 +---- sf-wkt-ios/SFWTGeometryWriter.m | 2 +- sf-wkt-ios/sf-wkt-ios-Bridging-Header.h | 18 ---------- sf-wkt-ios/sf_wkt_ios.h | 3 ++ sf-wkt-ios/sf_wkt_ios.swift | 9 ----- sf-wkt-iosTests/SFWTGeometryTestUtils.h | 6 +--- sf-wkt-iosTests/SFWTGeometryTestUtils.m | 11 +++--- sf-wkt-iosTests/SFWTReadmeTest.h | 2 +- sf-wkt-iosTests/SFWTReadmeTest.m | 5 ++- sf-wkt-iosTests/SFWTSwiftReadmeTest.swift | 5 +-- sf-wkt-iosTests/SFWTTestCase.m | 34 +++++++++---------- sf-wkt-iosTests/SFWTTestUtils.h | 2 +- .../sf-wkt-iosTests-Bridging-Header.h | 2 +- 19 files changed, 60 insertions(+), 100 deletions(-) delete mode 100644 sf-wkt-ios/sf-wkt-ios-Bridging-Header.h delete mode 100644 sf-wkt-ios/sf_wkt_ios.swift diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 712462b..ca60baa 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -18,4 +18,8 @@ jobs: - name: Install run: pod install - name: Build & Test - run: xcodebuild test -workspace sf-wkt-ios.xcworkspace -scheme sf-wkt-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-wkt-ios.xcworkspace -scheme sf-wkt-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86dce83..9f8f99c 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-wkt-ios.xcworkspace -scheme sf-wkt-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-wkt-ios.xcworkspace -scheme sf-wkt-ios -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/sf-wkt-ios.xcodeproj/project.pbxproj b/sf-wkt-ios.xcodeproj/project.pbxproj index 609c813..cb12e94 100644 --- a/sf-wkt-ios.xcodeproj/project.pbxproj +++ b/sf-wkt-ios.xcodeproj/project.pbxproj @@ -9,20 +9,18 @@ /* Begin PBXBuildFile section */ 042FC6571B963FE500549A4B /* sf_wkt_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 042FC64B1B963FE500549A4B /* sf_wkt_ios.framework */; }; 042FC6D31B96421E00549A4B /* sf-wkt-ios-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 042FC69E1B96421E00549A4B /* sf-wkt-ios-Prefix.pch */; }; - 042FC6D51B96453E00549A4B /* sf_wkt_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6D41B96453E00549A4B /* sf_wkt_ios.h */; }; - 0472B51B1C03590500496B87 /* sf-wkt-ios-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 0472B51A1C03590500496B87 /* sf-wkt-ios-Bridging-Header.h */; }; - 0485564C24D9A32C00810C6D /* SFWTGeometryTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485564A24D9A32C00810C6D /* SFWTGeometryTypeInfo.h */; }; + 042FC6D51B96453E00549A4B /* sf_wkt_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 042FC6D41B96453E00549A4B /* sf_wkt_ios.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0485564C24D9A32C00810C6D /* SFWTGeometryTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485564A24D9A32C00810C6D /* SFWTGeometryTypeInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485564D24D9A32C00810C6D /* SFWTGeometryTypeInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485564B24D9A32C00810C6D /* SFWTGeometryTypeInfo.m */; }; - 0485565024D9AD9000810C6D /* SFWTGeometryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485564E24D9AD9000810C6D /* SFWTGeometryReader.h */; }; + 0485565024D9AD9000810C6D /* SFWTGeometryReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485564E24D9AD9000810C6D /* SFWTGeometryReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485565124D9AD9000810C6D /* SFWTGeometryReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485564F24D9AD9000810C6D /* SFWTGeometryReader.m */; }; - 0485565424D9ADC300810C6D /* SFWTGeometryWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485565224D9ADC300810C6D /* SFWTGeometryWriter.h */; }; + 0485565424D9ADC300810C6D /* SFWTGeometryWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0485565224D9ADC300810C6D /* SFWTGeometryWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0485565524D9ADC300810C6D /* SFWTGeometryWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485565324D9ADC300810C6D /* SFWTGeometryWriter.m */; }; 0485565824DD6A9F00810C6D /* SFWTTestUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485565724DD6A9F00810C6D /* SFWTTestUtils.m */; }; 0485565B24DD6C9500810C6D /* SFWTGeometryTestUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485565A24DD6C9500810C6D /* SFWTGeometryTestUtils.m */; }; 0485565E24DD8B4700810C6D /* SFWTReadmeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485565D24DD8B4700810C6D /* SFWTReadmeTest.m */; }; 0485566124DDD0F500810C6D /* SFWTSwiftReadmeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0485566024DDD0F500810C6D /* SFWTSwiftReadmeTest.swift */; }; 0485566324DDEF7300810C6D /* SFWTTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0485566224DDEF7300810C6D /* SFWTTestCase.m */; }; - 0493A59E2AE94176000B75E6 /* sf_wkt_ios.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0493A59D2AE94176000B75E6 /* sf_wkt_ios.swift */; }; B4B9C5C590F6D09B45DC2BDB /* libPods-sf-wkt-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F9A70C9172FC5893F17C0FB6 /* libPods-sf-wkt-ios.a */; }; B5D94958E350F092F31540ED /* libPods-sf-wkt-iosTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 499642A447440D35F38311C9 /* libPods-sf-wkt-iosTests.a */; }; /* End PBXBuildFile section */ @@ -44,7 +42,6 @@ 042FC65C1B963FE500549A4B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 042FC69E1B96421E00549A4B /* sf-wkt-ios-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "sf-wkt-ios-Prefix.pch"; sourceTree = ""; }; 042FC6D41B96453E00549A4B /* sf_wkt_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sf_wkt_ios.h; sourceTree = ""; }; - 0472B51A1C03590500496B87 /* sf-wkt-ios-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "sf-wkt-ios-Bridging-Header.h"; sourceTree = ""; }; 0485564A24D9A32C00810C6D /* SFWTGeometryTypeInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFWTGeometryTypeInfo.h; sourceTree = ""; }; 0485564B24D9A32C00810C6D /* SFWTGeometryTypeInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFWTGeometryTypeInfo.m; sourceTree = ""; }; 0485564E24D9AD9000810C6D /* SFWTGeometryReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFWTGeometryReader.h; sourceTree = ""; }; @@ -60,7 +57,6 @@ 0485565F24DDD0F400810C6D /* sf-wkt-iosTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "sf-wkt-iosTests-Bridging-Header.h"; sourceTree = ""; }; 0485566024DDD0F500810C6D /* SFWTSwiftReadmeTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SFWTSwiftReadmeTest.swift; sourceTree = ""; }; 0485566224DDEF7300810C6D /* SFWTTestCase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFWTTestCase.m; sourceTree = ""; }; - 0493A59D2AE94176000B75E6 /* sf_wkt_ios.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = sf_wkt_ios.swift; sourceTree = ""; }; 192D9E5452A64EB6A7955A5A /* Pods-sf-wkt-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkt-ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkt-ios/Pods-sf-wkt-ios.release.xcconfig"; sourceTree = ""; }; 457018C9103A514A78925D9E /* Pods-sf-wkt-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-sf-wkt-ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-sf-wkt-ios/Pods-sf-wkt-ios.debug.xcconfig"; sourceTree = ""; }; 499642A447440D35F38311C9 /* libPods-sf-wkt-iosTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-sf-wkt-iosTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -114,7 +110,6 @@ isa = PBXGroup; children = ( 042FC6D41B96453E00549A4B /* sf_wkt_ios.h */, - 0493A59D2AE94176000B75E6 /* sf_wkt_ios.swift */, 0485564E24D9AD9000810C6D /* SFWTGeometryReader.h */, 0485564F24D9AD9000810C6D /* SFWTGeometryReader.m */, 0485564A24D9A32C00810C6D /* SFWTGeometryTypeInfo.h */, @@ -123,7 +118,6 @@ 0485565324D9ADC300810C6D /* SFWTGeometryWriter.m */, 042FC69E1B96421E00549A4B /* sf-wkt-ios-Prefix.pch */, 042FC64E1B963FE500549A4B /* Supporting Files */, - 0472B51A1C03590500496B87 /* sf-wkt-ios-Bridging-Header.h */, ); path = "sf-wkt-ios"; sourceTree = ""; @@ -188,12 +182,11 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0472B51B1C03590500496B87 /* sf-wkt-ios-Bridging-Header.h in Headers */, 042FC6D51B96453E00549A4B /* sf_wkt_ios.h in Headers */, 0485564C24D9A32C00810C6D /* SFWTGeometryTypeInfo.h in Headers */, 0485565024D9AD9000810C6D /* SFWTGeometryReader.h in Headers */, - 042FC6D31B96421E00549A4B /* sf-wkt-ios-Prefix.pch in Headers */, 0485565424D9ADC300810C6D /* SFWTGeometryWriter.h in Headers */, + 042FC6D31B96421E00549A4B /* sf-wkt-ios-Prefix.pch in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -245,7 +238,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1500; + LastUpgradeCheck = 1620; ORGANIZATIONNAME = NGA; TargetAttributes = { 042FC64A1B963FE500549A4B = { @@ -341,7 +334,6 @@ 0485565524D9ADC300810C6D /* SFWTGeometryWriter.m in Sources */, 0485565124D9AD9000810C6D /* SFWTGeometryReader.m in Sources */, 0485564D24D9A32C00810C6D /* SFWTGeometryTypeInfo.m in Sources */, - 0493A59E2AE94176000B75E6 /* sf_wkt_ios.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -372,6 +364,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 +427,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++"; @@ -543,7 +537,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = 6179C77188B4A0E8D4DEDBEB /* Pods-sf-wkt-iosTests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", @@ -570,7 +563,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = B17E59AE80997CC09DD740D6 /* Pods-sf-wkt-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-wkt-ios.xcodeproj/xcshareddata/xcschemes/sf-wkt-ios.xcscheme b/sf-wkt-ios.xcodeproj/xcshareddata/xcschemes/sf-wkt-ios.xcscheme index ff3ee34..fb13424 100644 --- a/sf-wkt-ios.xcodeproj/xcshareddata/xcschemes/sf-wkt-ios.xcscheme +++ b/sf-wkt-ios.xcodeproj/xcshareddata/xcschemes/sf-wkt-ios.xcscheme @@ -1,6 +1,6 @@ +@import XCTest; /** * README example tests diff --git a/sf-wkt-iosTests/SFWTReadmeTest.m b/sf-wkt-iosTests/SFWTReadmeTest.m index 04c8ffa..b948983 100644 --- a/sf-wkt-iosTests/SFWTReadmeTest.m +++ b/sf-wkt-iosTests/SFWTReadmeTest.m @@ -8,9 +8,8 @@ #import "SFWTReadmeTest.h" #import "SFWTTestUtils.h" -#import "SFWTGeometryReader.h" -#import "SFWTGeometryWriter.h" #import "SFWTGeometryTestUtils.h" +@import sf_wkt_ios; @implementation SFWTReadmeTest @@ -45,7 +44,7 @@ -(SFGeometry *) readTester: (NSString *) text{ // NSString *text = ... SFGeometry *geometry = [SFWTGeometryReader readGeometryWithText:text]; - SFGeometryType geometryType = geometry.geometryType; +// SFGeometryType geometryType = geometry.geometryType; return geometry; } diff --git a/sf-wkt-iosTests/SFWTSwiftReadmeTest.swift b/sf-wkt-iosTests/SFWTSwiftReadmeTest.swift index 1088188..c93ad66 100644 --- a/sf-wkt-iosTests/SFWTSwiftReadmeTest.swift +++ b/sf-wkt-iosTests/SFWTSwiftReadmeTest.swift @@ -7,7 +7,8 @@ // import XCTest - +import sf_ios +import sf_wkt_ios /** * README example tests */ @@ -39,7 +40,7 @@ class SFWTSwiftReadmeTest: XCTestCase{ // var text: String = ... let geometry: SFGeometry = SFWTGeometryReader.readGeometry(withText: text) - let geometryType: SFGeometryType = geometry.geometryType +// let geometryType: SFGeometryType = geometry.geometryType return geometry } diff --git a/sf-wkt-iosTests/SFWTTestCase.m b/sf-wkt-iosTests/SFWTTestCase.m index 7e98ce0..31d26a2 100644 --- a/sf-wkt-iosTests/SFWTTestCase.m +++ b/sf-wkt-iosTests/SFWTTestCase.m @@ -6,12 +6,11 @@ // Copyright © 2020 NGA. All rights reserved. // -#import +@import XCTest; +@import sf_ios; +@import sf_wkt_ios; #import "SFWTTestUtils.h" #import "SFWTGeometryTestUtils.h" -#import "SFExtendedGeometryCollection.h" -#import "SFPointFiniteFilter.h" -#import "SFWTGeometryReader.h" @interface SFWTTestCase : XCTestCase @@ -96,7 +95,7 @@ -(void) testMultiCurveWithLineStrings{ SFGeometry *geometry = [SFWTGeometryTestUtils readGeometryWithText:text]; [SFWTTestUtils assertTrue:[geometry isKindOfClass:[SFGeometryCollection class]]]; - [SFWTTestUtils assertEqualIntWithValue:geometry.geometryType andValue2:SF_GEOMETRYCOLLECTION]; + XCTAssertEqual(geometry.geometryType, SF_GEOMETRYCOLLECTION); SFGeometryCollection *multiCurve = (SFGeometryCollection *) geometry; [SFWTTestUtils assertEqualIntWithValue:2 andValue2:[multiCurve numGeometries]]; SFGeometry *geometry1 = [multiCurve geometryAtIndex:0]; @@ -115,7 +114,7 @@ -(void) testMultiCurveWithLineStrings{ [SFWTTestUtils assertEqualDoubleWithValue:44.2390383216843 andValue2:[point2.y doubleValue] andDelta:0.0000000000001]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWTTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); [self geometryTester:extendedMultiCurve withCompare:multiCurve andDelta:0.000000000001]; @@ -136,7 +135,7 @@ -(void) testMultiCurveWithCompoundCurve{ SFGeometry *geometry = [SFWTGeometryTestUtils readGeometryWithText:text]; [SFWTTestUtils assertTrue:[geometry isKindOfClass:[SFGeometryCollection class]]]; - [SFWTTestUtils assertEqualIntWithValue:geometry.geometryType andValue2:SF_GEOMETRYCOLLECTION]; + XCTAssertEqual(geometry.geometryType, SF_GEOMETRYCOLLECTION); SFGeometryCollection *multiCurve = (SFGeometryCollection *) geometry; [SFWTTestUtils assertEqualIntWithValue:1 andValue2:[multiCurve numGeometries]]; SFGeometry *geometry1 = [multiCurve geometryAtIndex:0]; @@ -156,7 +155,7 @@ -(void) testMultiCurveWithCompoundCurve{ [SFWTTestUtils assertEqualWithValue:[SFPoint pointWithXValue:3451418.006 andYValue:5481808.951] andValue2:[lineString2 pointAtIndex:1]]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWTTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); [self geometryTester:extendedMultiCurve withCompare:multiCurve]; @@ -175,7 +174,7 @@ -(void) testMultiCurve{ NSString *text = [SFWTGeometryTestUtils writeTextWithGeometry:multiCurve]; SFExtendedGeometryCollection *extendedMultiCurve = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiCurve]; - [SFWTTestUtils assertEqualIntWithValue:SF_MULTICURVE andValue2:extendedMultiCurve.geometryType]; + XCTAssertEqual(SF_MULTICURVE, extendedMultiCurve.geometryType); NSString *extendedText = [SFWTGeometryTestUtils writeTextWithGeometry:extendedMultiCurve]; @@ -187,8 +186,9 @@ -(void) testMultiCurve{ [SFWTTestUtils assertTrue:[geometry1 isKindOfClass:[SFGeometryCollection class]]]; [SFWTTestUtils assertTrue:[geometry2 isKindOfClass:[SFGeometryCollection class]]]; - [SFWTTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry1.geometryType]; - [SFWTTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry2.geometryType]; + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry1.geometryType); + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry1.geometryType); + [SFWTTestUtils assertEqualWithValue:multiCurve andValue2:geometry1]; [SFWTTestUtils assertEqualWithValue:geometry1 andValue2:geometry2]; @@ -211,8 +211,8 @@ -(void) testMultiSurface{ NSString *text = [SFWTGeometryTestUtils writeTextWithGeometry:multiSurface]; SFExtendedGeometryCollection *extendedMultiSurface = [SFExtendedGeometryCollection extendedGeometryCollectionWithGeometryCollection:multiSurface]; - [SFWTTestUtils assertEqualIntWithValue:SF_MULTISURFACE andValue2:extendedMultiSurface.geometryType]; - + XCTAssertEqual(SF_MULTISURFACE, extendedMultiSurface.geometryType); + NSString *extendedText = [SFWTGeometryTestUtils writeTextWithGeometry:extendedMultiSurface]; [SFWTTestUtils assertTrue:[text hasPrefix:[SFGeometryTypes name:SF_GEOMETRYCOLLECTION]]]; @@ -223,8 +223,8 @@ -(void) testMultiSurface{ [SFWTTestUtils assertTrue:[geometry1 isKindOfClass:[SFGeometryCollection class]]]; [SFWTTestUtils assertTrue:[geometry2 isKindOfClass:[SFGeometryCollection class]]]; - [SFWTTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry1.geometryType]; - [SFWTTestUtils assertEqualIntWithValue:SF_GEOMETRYCOLLECTION andValue2:geometry2.geometryType]; + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry1.geometryType); + XCTAssertEqual(SF_GEOMETRYCOLLECTION, geometry2.geometryType); [SFWTTestUtils assertEqualWithValue:multiSurface andValue2:geometry1]; [SFWTTestUtils assertEqualWithValue:geometry1 andValue2:geometry2]; @@ -264,7 +264,7 @@ -(void) testMultiPolygon25{ SFGeometry *geometry = [SFWTGeometryTestUtils readGeometryWithText:text]; [SFWTTestUtils assertTrue:[geometry isKindOfClass:[SFMultiPolygon class]]]; - [SFWTTestUtils assertEqualIntWithValue:SF_MULTIPOLYGON andValue2:geometry.geometryType]; + XCTAssertEqual(SF_MULTIPOLYGON, geometry.geometryType); SFMultiPolygon *multiPolygon = (SFMultiPolygon *) geometry; [SFWTTestUtils assertTrue:multiPolygon.hasZ]; [SFWTTestUtils assertFalse:multiPolygon.hasM]; @@ -554,7 +554,7 @@ +(void) finiteFilterTester: (NSString *) text andFilter: (SFPointFiniteFilter *) [points addObjectsFromArray:[((SFPolygon *) geometry) ringAtIndex:0].points]; break; default: - [SFWTTestUtils fail:[NSString stringWithFormat:@"Unexpected test case: %u", geometry.geometryType]]; + [SFWTTestUtils fail:[NSString stringWithFormat:@"Unexpected test case: %ld", geometry.geometryType]]; } for(SFPoint *point in points){ diff --git a/sf-wkt-iosTests/SFWTTestUtils.h b/sf-wkt-iosTests/SFWTTestUtils.h index 51d118a..92ba260 100644 --- a/sf-wkt-iosTests/SFWTTestUtils.h +++ b/sf-wkt-iosTests/SFWTTestUtils.h @@ -6,7 +6,7 @@ // Copyright © 2020 NGA. All rights reserved. // -#import +@import Foundation; @interface SFWTTestUtils : NSObject diff --git a/sf-wkt-iosTests/sf-wkt-iosTests-Bridging-Header.h b/sf-wkt-iosTests/sf-wkt-iosTests-Bridging-Header.h index 3f033e8..8f6735f 100644 --- a/sf-wkt-iosTests/sf-wkt-iosTests-Bridging-Header.h +++ b/sf-wkt-iosTests/sf-wkt-iosTests-Bridging-Header.h @@ -6,6 +6,6 @@ // Copyright © 2020 NGA. All rights reserved. // -#import "sf-wkt-ios-Bridging-Header.h" +@import sf_wkt_ios; #import "SFWTTestUtils.h" #import "SFWTGeometryTestUtils.h" From dcc0087ea5afc8a902a05e5cca257f358f42ac90 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Mon, 14 Apr 2025 16:53:10 -0400 Subject: [PATCH 3/3] Updated to iOS 15 --- Podfile | 2 +- sf-wkt-ios.podspec | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Podfile b/Podfile index 68f06cc..a901539 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-wkt-ios' do # pod 'sf-ios', '5.0.0' diff --git a/sf-wkt-ios.podspec b/sf-wkt-ios.podspec index 680f4f3..25facb4 100644 --- a/sf-wkt-ios.podspec +++ b/sf-wkt-ios.podspec @@ -10,8 +10,8 @@ Pod::Spec.new do |s| s.requires_arc = true s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - s.platform = :ios, '12.0' - s.ios.deployment_target = '12.0' + s.platform = :ios, '15.0' + s.ios.deployment_target = '15.0' s.source_files = 'sf-wkt-ios/**/*.{h,m}'