Dive into the world of programming languages used for app development.

All subtopics
Posts under Programming Languages topic

Post

Replies

Boosts

Views

Activity

How to run `xctest` bundle - or how to add `entitlement` to test?
I am writing a SPM based project for MacOS. In this project? I need to access MacOS Keychain. I am write a swift test built by SPM testTarget(). I can see it generates a bundle ./.build/x86_64-apple-macosx/debug/MyProjectTests.xctest with an executable: % file ./.build/x86_64-apple-macosx/debug/MyProjectPackageTests.xctest/Contents/MacOS/MyProjectPackageTests ./.build/x86_64-apple-macosx/debug/MyProjectPackageTests.xctest/Contents/MacOS/MyProjectPackageTests: Mach-O 64-bit bundle x86_64 This bundle file cannot be executed. How can I execute its tests? I tried with xcodebuild test-without-building -xctestrun ./.build/x86_64-apple-macosx/debug/MyProjectPackageTests.xctest -destination 'platform=macOS' without any chance. Obviously the next question is can I 'simply' add entitlement to this bundle with codesign to fix my enttilement error. My error when running the test is A required entitlement isn't present.
2
0
1.4k
Mar ’25
json array shows in debugger but can't parse
Hello, I have a json array showing in Xcode debugger (from the line "print(dataString)"): Optional("[{\"id\":\"8e8tfdcssu4u2hn7a71tkveahjhn8xghqcfkwf1bzvtrw5nu0b89w\",\"name\":\"Ameliana\",\"country\":\"France\",\"type\":\"Private\\/Corporate\",\"overallrecsit\":\"Positive\",\"dlastupd\":\"1741351633\",\"doverallrecsit\":\"1546848000\"},{\"id\":\"z69718a1a5z2y5czkwrhr1u37h7h768v05qr3pf1fegh4r4yrt5a68\",\"name\":\"Timberland\",\"country\":\"Switzerland\",\"type\":\"Charter\",\"overallrecsit\":\"Negative\",\"dlastupd\":\"1741351615\",\"doverallrecsit\":\"1740434582\"}, But my JSON decoder is throwing the catch error "Error in JSON parsing" This is the code: super.viewDidLoad() let urlString = "https://www.pilotjobsnetwork.com/service_ios.php" let url = URL(string: urlString) guard url != nil else { return } let session = URLSession.shared let dataTask = session.dataTask(with: url!) { (data, response, error) in var dataString = String(data: data!, encoding: String.Encoding.utf8) print(dataString) if error == nil && data != nil { // Parse JSON let decoder = JSONDecoder() do { let newsFeed = try decoder.decode(NewsFeed.self, from: data!) print(newsFeed) print(error) } catch{ print("Error in JSON parsing") } } } // Make the API Call dataTask.resume() } And this is my Codable file NewsFeed.swift: struct NewsFeed: Codable { var id: String var name: String var country: String var type: String var overallrecsit: String var dlastupd: String var doverallrecsit: String } Please do you know why the parsing may be failing? Is it significant that in the debugging window the JSON is displaying backslashes before the quotation marks? Thank you for any pointers :-)
2
0
335
Mar ’25
@Observable class not compatible with Codable?
So any time I create a class that's both @Observable and Codable, e.g. @Observable class GameLocationManager : Codable { I get a warning in the macro expansion code: @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar() Immutable property will not be decoded because it is declared with an initial value which cannot be overwritten. I've been ignoring them for now, but there are at least a half a dozen of them now in my (relatively small) codebase, and I'd like to find a solution (ideally one that doesn't require me to write init(decoder:) for every @Observable class in my project...), especially since I'm not sure what the actual consequences of ignoring this might be.
2
0
920
Nov ’24
How to implement thread-safe property wrapper notifications across different contexts in Swift?
I’m trying to create a property wrapper that that can manage shared state across any context, which can get notified if changes happen from somewhere else. I'm using mutex, and getting and setting values works great. However, I can't find a way to create an observer pattern that the property wrappers can use. The problem is that I can’t trigger a notification from a different thread/context, and have that notification get called on the correct thread of the parent object that the property wrapper is used within. I would like the property wrapper to work from anywhere: a SwiftUI view, an actor, or from a class that is created in the background. The notification preferably would get called synchronously if triggered from the same thread or actor, or otherwise asynchronously. I don’t have to worry about race conditions from the notification because the state only needs to reach eventuall consistency. Here's the simplified pseudo code of what I'm trying to accomplish: // A single source of truth storage container. final class MemoryShared<Value>: Sendable { let state = Mutex<Value>(0) func withLock(_ action: (inout Value) -> Void) { state.withLock(action) notifyObservers() } func get() -> Value func notifyObservers() func addObserver() } // Some shared state used across the app static let globalCount = MemoryShared<Int>(0) // A property wrapper to access the shared state and receive changes @propertyWrapper struct SharedState<Value> { public var wrappedValue: T { get { state.get() } nonmutating set { // Can't set directly } } var publisher: Publisher {} init(state: MemoryShared) { // ... } } // I'd like to use it in multiple places: @Observable class MyObservable { @SharedState(globalCount) var count: Int } actor MyBackgroundActor { @SharedState(globalCount) var count: Int } @MainActor struct MyView: View { @SharedState(globalCount) var count: Int } What I’ve Tried All of the examples below are using the property wrapper within a @MainActor class. However the same issue happens no matter what context I use the wrapper in: The notification callback is never called on the context the property wrapper was created with. I’ve tried using @isolated(any) to capture the context of the wrapper and save it to be called within the state in with unchecked sendable, which doesn’t work: final class MemoryShared<Value: Sendable>: Sendable { // Stores the callback for later. public func subscribe(callback: @escaping @isolated(any) (Value) -> Void) -> Subscription } @propertyWrapper struct SharedState<Value> { init(state: MemoryShared<Value>) { MainActor.assertIsolated() // Works! state.subscribe { MainActor.assertIsolated() // Fails self.publisher.send() } } } I’ve tried capturing the isolation within a task with AsyncStream. This actually compiles with no sendable issues, but still fails: @propertyWrapper struct SharedState<Value> { init(isolation: isolated (any Actor)? = #isolation, state: MemoryShared<Value>) { let (taskStream, continuation) = AsyncStream<Value>.makeStream() // The shared state sends new values to the continuation. subscription = state.subscribe(continuation: continuation) MainActor.assertIsolated() // Works! let task = Task { _ = isolation for await value in taskStream { _ = isolation MainActor.assertIsolated() // Fails } } } } I’ve tried using multiple combine subjects and publishers: final class MemoryShared<Value: Sendable>: Sendable { let subject: PassthroughSubject<T, Never> // ... var publisher: Publisher {} // ... } @propertyWrapper final class SharedState<Value> { var localSubject: Subject init(state: MemoryShared<Value>) { MainActor.assertIsolated() // Works! handle = localSubject.sink { MainActor.assertIsolated() // Fails } stateHandle = state.publisher.subscribe(localSubject) } } I’ve also tried: Using NotificationCenter Making the property wrapper a class Using NSKeyValueObserving Using a box class that is stored within the wrapper. Using @_inheritActorContext. All of these don’t work, because the event is never called from the thread the property wrapper resides in. Is it possible at all to create an observation system that notifies the observer from the same context as where the observer was created? Any help would be greatly appreciated!
2
0
473
Mar ’25
json array shows in debugger but can't parse (corrected question)
Hello, Please see the test project at https://we.tl/t-aWAu7kk9lD I have a json array showing in Xcode debugger (from the line "print(dataString)"): Optional("[{\"id\":\"8e8tcssu4u2hn7a71tkveahjhn8xghqcfkwf1bzvtrw5nu0b89w\",\"name\":\"Test name 0\",\"country\":\"Test country 0\",\"type\":\"Test type 0\",\"situation\":\"Test situation 0\",\"timestamp\":\"1546848000\"},{\"id\":\"z69718a1a5z2y5czkwrhr1u37h7h768v05qr3pf1h4r4yrt5a68\",\"name\":\"Test name 1\",\"country\":\"Test country 1\",\"type\":\"Test type 1\",\"situation\":\"Test situation 1\",\"timestamp\":\"1741351615\"},{\"id\":\"fh974sv586nhyysbhg5nak444968h7hgcgh6yw0usbvcz9b0h69\",\"name\":\"Test name 2\",\"country\":\"Test country 2\",\"type\":\"Test type 2\",\"situation\":\"Test situation 2\",\"timestamp\":\"1741351603\"},{\"id\":\"347272052385993\",\"name\":\"Test name 3\",\"country\":\"Test country 3\",\"type\":\"Test type 3\",\"situation\":\"Test situation 3\",\"timestamp\":\"1741351557\"}]") But my JSON decoder is throwing a catch error Line 57, Error in JSON parsing typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil)) This is the code: let urlString = "https://www.notafunnyname.com/jsonmockup.php" let url = URL(string: urlString) guard url != nil else { return } let session = URLSession.shared let dataTask = session.dataTask(with: url!) { (data, response, error) in var dataString = String(data: data!, encoding: String.Encoding.utf8) print(dataString) if error == nil && data != nil { // Parse JSON let decoder = JSONDecoder() do { let newsFeed = try decoder.decode(NewsFeed.self, from: data!) print("line 51") print(newsFeed) print(error) } catch{ print("Line 57, Error in JSON parsing") print(error) } } } // Make the API Call dataTask.resume() } And this is my Codable file NewsFeed.swift: struct NewsFeed: Codable { var id: String var name: String var country: String var type: String var situation: String var timestamp: String } Please do you know how to resolve the typeMismatch error?
2
0
337
Mar ’25
SwiftData and 'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release
I get this red warning in Xcode every time my app is syncing to the iCloud. My model has only basic types and enum that conform to Codable so i'm not sure what is the problem. App is working well, synchronization works. But the warning doesn't look good. Maybe someone has idea how to debug it.
2
0
900
Dec ’24
autoreleasepool with async await
I ran into a problem, I have a recursive function in which Data type objects are temporarily created, because of this, the memory expands until the entire recursion ends. It would just be fixed using autoreleasepool, but it can't be used with async await, and I really don't want to rewrite the code for callbacks. Is there any option to use autoreleasepool with async await functions? (I Googled one option, that the Task already contains its own autoreleasepool, and if you do something like that, it should work, but it doesn't, the memory is still growing) func autoreleasepool&lt;Result&gt;(_ perform: @escaping () async throws -&gt; Result) async throws -&gt; Result { try await Task { try await perform() }.value }
2
0
126
Mar ’25
XCode not making bridging header file?
Hi, I'm trying to add Swift code to my Obj-C project. I've gone through all the tutorials and troubleshooting advice I can find online, no dice. I would appreciate any help, thank you so much in advance. I add a new swift file to my Obj-C project XCode offers to create a bridging header file for me, yes please New .swift file and .h file are added to my project no problem Header file shows up in build settings no problem I add a new class to my new swift file ("@objc class HelloPrinter: NSObject") When I build the app, nothing is generated in the bridging header file and the class is obviously inaccessible to my obj-c code Is this supposed to work? My understanding is that it's supposed to work. Somewhat concerning is the text that XCode puts in the bridging header file when it's created: "Use this file to import your target's public headers that you would like to expose to Swift." I don't want to use this bridging header file for anything. I want XCode to GENERATE STUFF in the bridging file. I also don't want to expose anything to Swift. I want the opposite to happen. So I don't get this text at all. Thanks in advance again.
2
0
86
Apr ’25
Missing libclang_rt.osx.a library on OSX
I tried to install the flang-new compiler from Homebrew on Sequoia OSX. Complex division is broken because file divdc3 is missing. This file comes from libclang_rt.osx.a, a standard LLVM library. This library is missing on OSX. program test integer, parameter :: n=2 complex(kind=8), dimension(n,n) :: V complex(kind=8) :: PER V(1,1)=cmplx(4.0,2.0) V(2,2)=cmplx(5.0,3.0) V(1,2)=0.0 V(2,1)=0.5 PER=cmplx(1.2,1.2) V(:,:)=V(:,:)/PER end program test alainhebert@Alains-MacBook-Air-2 test_complex % flang-new test.f90 Undefined symbols for architecture arm64: “___divdc3”, referenced from: __QQmain in test-fc2bb3.o ld: symbol(s) not found for architecture arm64 flang-new: error: linker command failed with exit code 1 (use -v to see invocation)
2
0
678
Dec ’24
Compiler - method linking issue.
Issue: During app execution, the intended method is not being called; instead, the method preceding (written above the intended method) is being executed. For Example: //In my case the ViewController class is at 3rd level of inheritance. class ViewController: UIViewController { func methodA() { print("methodA") } func methodB() { print("methodB") } } let vc = ViewController() vc.methodB() Output: //"methodA" Expected: //"methodB" Observations: Recent code changes have revealed that enabling the below Swift-6 flag leads to this linking issue. When this flag is commented out, the problem disappears. .enableUpcomingFeature("InternalImportsByDefault") Additionally, moving the intended method into an extension of the same class resolves the issue when the flag is enabled. Conclusion: To resolve the issue: Comment out the Swift-6 flag. Alternatively, move the method into an extension of the same class, which addresses the issue for this specific case. I had similar issue in other class where it crashes with message "method not found", but actually the method is there. When moving the method into an extension of same class resolve this issue. Any help is much appreciated. Thanking you..
2
0
83
May ’25
Swift / C++ Interop with Storekit - actor isolated structure cannot be exported to C++
I can't find a viable path to call StoreKit from C++ right now and would love some ideas. I'm implementing the code exactly as shown at 4:09 in https://developer.apple.com/videos/play/wwdc2023/10172/ However when I add any StoreKit functionality in I immediately get "Actor isolated structure cannot be exposed in C++" This makes me think I can't create a StoreKit view and call it from C++? Am I missing a better way? I don't think I can have another structure that holds the storeChooser in it because it will have the same problem (I assume, although I will check). Part of the issue seems to be that my app is C++ so there is no main function called in the swift for me to open this view with either, I was going to use the present function Zoe described (as below). I've tried a lot of alternative approaches but it seems to be blocking async functions from showing in C++ as well. So I'm not sure how to access the basic product(for:) and purchase(product) functions. import Foundation import StoreKit import SwiftUI public struct storeChooser: View { public var productIDs: [String] public var fetchError: String //@State //Note this is from the UI @State public var products: [Product] = [] // @State private var isPresented = true // weak private var host: UIViewController? = nil public init() { productIDs = ["20_super_crystals_v1"] products = [] self.fetchError = "untried" } public var body: some View { VStack(spacing: 20) { Text( "Products") ForEach(self.products) { product in Button { //dont do anything yet } label: { Text("\(product.displayPrice) - \(product.displayName)") } } }.task { do { try await self.loadProducts() } catch { print(error) } } } public func queryProducts() { Task { do { try await self.loadProducts() } catch { print(error) } } } public func getProduct1Name() -> String { if self.products.count > 0 { return self.products[0].displayName } else { return "empty" } } private func loadProducts() async throws { self.products = try await Product.products(for: self.productIDs) } /* public mutating func present(_ viewController: UIViewController) { isPresented = true; let host = UIHostingController(rootView: self) host.rootView.host = host viewController.present(host, animated: true) } */ }
2
0
108
May ’25
Calling StoreKit Swift from C++
What is the most obvious method of calling StoreKit from C++. I'm getting blocked by the fact that most of the critical StoreKit calls are async and functions marked a sync don't show up in the swift header for me to call from C++ (at least as far as I can tell). I'm trying to call let result = try await Product.products(for:productIDs) or let result = try await product.purchase() And C++ can't even see any functions I wrap these in as far as I can tell because i have to make them async. What am I missing? I tried a lot of alternates, like wrapping in Task { let result = try await Product.products(for:productIDs) } and it gives me 'Passing closure as a sending parameter' errors. Also when I try to call the same above code it gives me 'initializtion of immutable value never used' errors and the variables never appear. Code: struct storeChooser { public var productIDs: [String] public function checkProduct1 { Task { let result = try await Product.products(for: productIDs) } The above gives the initialization of immutable value skipped, and when I create a @State var products Then I get the 'passing closure as a sending parameter' error when i try to run it in a task it appears if I could make the function async and call it from C++ and have it return nothing it may work, does anyone know how to get C++ to see an async function in the -Swift.h file?
2
0
132
May ’25
Questions about calculate the square root using Accelerate
I am currently studying the Accelerate library by referring to Apple documentation. Here is the link to the referenced document: https://developer.apple.com/documentation/accelerate/veclib/vforce When I executed the sample code provided at the bottom of the document, I found a case where the results were different. let n = 10_000 let x = (0..&lt;n).map { _ in Float.random(in: 1 ... 10_000) } let y = x.map { return sqrt($0) } and let y = [Float](unsafeUninitializedCapacity: n) { buffer, initializedCount in vForce.sqrt(x, result: &amp;buffer) initializedCount = n } The code below is provided to observe the issue described above. import Accelerate Task { let n = 1//10_000 let x = (0..&lt;n).map { _ in Float(6737.015)//Float.random(in: 1 ... 10_000) } let y = x.map { return sqrt($0) } try? await Task.sleep(nanoseconds: 1_000_000_000) let z = [Float](unsafeUninitializedCapacity: n) { buffer, initializedCount in vForce.sqrt(x, result: &amp;buffer) initializedCount = n } } For a value of 6737.015 when calculating the square root: Using the sqrt(_:) function gives the result 82.07932, While using the vForce.sqrt(_:result:) function gives the result 82.07933. Using a calculator, the value comes out as 82.07932139, which shows that the result from vForce is incorrect. Could you explain the reason behind this difference?
2
0
521
Jan ’25
Strange values written in loop
I don't understand what's happening when I save values via a loop. I initialize an array with default values, then run a loop to assign calculated values to it. In the middle of the loop, I print values, then print values again after the loop is over. The array values sometimes change, even though nothing has been written between print calls (when they change, the values are equal the last value in the array, index 49). I made a test file which writes four types of values to an array: (1) A new class instance, (2) Calculation, (3) Variable, (4) Hard-code. Saving the same value gives different results between the different write methods: import Foundation let numElements : Int = 50 class CustomType{ var x : Double var y : Double init(x: Double = 1.23, y: Double = 2.34) { self.x = x self.y = y } } // Try this four different ways var array1 = [CustomType](repeating:CustomType(), count:numElements) var array2 = [CustomType](repeating:CustomType(), count:numElements) var array3 = [CustomType](repeating:CustomType(), count:numElements) var array4 = [CustomType](repeating:CustomType(), count:numElements) // Checking that defaults were written print("Pre: Point 1: (\(array1[44].x),\(array1[44].y))") print("Pre: Point 2: (\(array2[44].x),\(array2[44].y))") print("Pre: Point 3: (\(array3[44].x),\(array3[44].y))") print("Pre: Point 4: (\(array4[44].x),\(array4[44].y))") // --- Fix 1: Problem goes away if I uncomment this: // array1[44]=CustomType() // array2[44]=CustomType() // array3[44]=CustomType() // array4[44]=CustomType() // --- Fix 2: Or if you swap these two lines for the following line: // let index = 44 // do { for index in 0..<numElements{ let rads = Double(index) * 2 * Double.pi/Double(numElements) let sinrads = sin(rads), cosrads = cos(rads) // Four different ways to save to arrays array1[index] = CustomType(x:sin(rads),y:cos(rads)) array2[index].x = sin(rads) array2[index].y = cos(rads) array3[index].x = sinrads array3[index].y = cosrads array4[index].x = -0.684547105928689 array4[index].y = 0.7289686274214113 if(index==44){ print("\n== Printing results mid-loop at index 44 ==") print("During: index: \(index), Calculated Rads: \(rads)") print("During: Calculated Vals: (\(sin(rads)),\(cos(rads)))") print("During: Stored 'let' Vals: (\(sinrads),\(cosrads))") print("During: Point 1: (\(array1[44].x),\(array1[44].y))") print("During: Point 2: (\(array2[44].x),\(array2[44].y))") print("During: Point 3: (\(array3[44].x),\(array3[44].y))") print("During: Point 4: (\(array4[44].x),\(array4[44].y))") } } print("\n== Printing the same results after the loop ==") print("Post: Point 1: (\(array1[44].x),\(array1[44].y))") print("Post: Point 2: (\(array2[44].x),\(array2[44].y))") print("Post: Point 3: (\(array3[44].x),\(array3[44].y))") print("Post: Point 4: (\(array4[44].x),\(array4[44].y))") print("\n== Reverse-calculating results from a correct array (array 1) to get the for loop index ==") print("reverse index calculation 01: \( (atan2(array1[ 1].x,array1[ 1].y) + Double.pi * 0) * Double(numElements)/(2*Double.pi) )") print("reverse index calculation 44: \( (atan2(array1[44].x,array1[44].y) + Double.pi * 2) * Double(numElements)/(2*Double.pi) )") print("reverse index calculation 45: \( (atan2(array1[45].x,array1[45].y) + Double.pi * 2) * Double(numElements)/(2*Double.pi) )") print("\n== Reverse-calculating results from an incorrect array (array 2) to get the for loop index ==") print("reverse index calculation 1: \( (atan2(array2[ 1].x,array2[ 1].y) + Double.pi * 2) * Double(numElements)/(2*Double.pi) )") print("reverse index calculation 44: \( (atan2(array2[44].x,array2[44].y) + Double.pi * 2) * Double(numElements)/(2*Double.pi) )") print("reverse index calculation 45: \( (atan2(array2[45].x,array2[45].y) + Double.pi * 2) * Double(numElements)/(2*Double.pi) )") Which gives the following output: Pre: Point 1: (1.23,2.34) Pre: Point 2: (1.23,2.34) Pre: Point 3: (1.23,2.34) Pre: Point 4: (1.23,2.34) == Printing results mid-loop at index 44 == During: index: 44, Calculated Rads: 5.529203070318036 During: Calculated Vals: (-0.684547105928689,0.7289686274214113) During: Stored 'let' Vals: (-0.684547105928689,0.7289686274214113) During: Point 1: (-0.684547105928689,0.7289686274214113) During: Point 2: (-0.684547105928689,0.7289686274214113) During: Point 3: (-0.684547105928689,0.7289686274214113) During: Point 4: (-0.684547105928689,0.7289686274214113) == Printing the same results after the loop == Post: Point 1: (-0.684547105928689,0.7289686274214113) Post: Point 2: (-0.12533323356430465,0.9921147013144778) Post: Point 3: (-0.12533323356430465,0.9921147013144778) Post: Point 4: (-0.684547105928689,0.7289686274214113) == Reverse-calculating results from a correct array (array 1) to get the for loop index == reverse index calculation 01: 1.0000000000000002 reverse index calculation 44: 43.99999999999999 reverse index calculation 45: 45.0 == Reverse-calculating results from an incorrect array (array 2) to get the for loop index == reverse index calculation 1: 49.0 reverse index calculation 44: 49.0 reverse index calculation 45: 49.0 Program ended with exit code: 0 Re-initializing the objects prior to the loop fixes the problem (see "Fix 1" in the comments), but the elements of the array are all initialized during creation and I don't understand why doing it a second time is helpful. The values should all be the same, am I missing something simple?
2
0
512
Dec ’24
Best practice: Use of enum without cases for static helper functions?
Hi all, In Swift, I often see static helper functions grouped in an enum without any cases, like this: enum StringUtils { static func camelCaseToSnakeCase(_ input: String) -> String { // implementation } } Since this enum has no cases, it cannot be instantiated – which is exactly the point. It’s meant to group related functionality without any stored state, and without the need for instantiation. This pattern avoids writing a struct with a private init() and makes the intent clearer: "This is just a static utility, not an object." You’ll often see this used for things like: AnalyticsEvents.track(_:) My question: Is this use of a case-less enum considered good practice in Swift when building static-only helpers? Or is there a better alternative for expressing intent and preventing instantiation? I’d appreciate any insight – especially if there’s official guidance or references from the Swift core team. Thanks!
2
0
177
May ’25
Can I use @_implementationOnly import in my Framework
We have FrameworkA which needs to use another FrameworkB internally to fetch a token. Now when I try to use this FrameworkA, we are seeing an issue with internal framework i.e. No such module 'FrameworkB'. But when I use @_implementationOnly import for the internal FrameworkB, I didn't see any issues. So just wanted to check If I can go ahead and use this @_implementationOnly import flag in Production?
2
0
109
May ’25
indices(where:) Swift Playgrounds Issue: "Cannot call value of non-function type Range<Int>"
Hey there- I'm having a quite interesting bug on Swift Playgrounds. I am trying to run my app with this following code snippet which does not compile on Swift Playgrounds, yet compiles on XCode (note: this is a Swift Playground app) if #available(iOS 18.0, *) { //simple function to get the indices of other items that have the same date as the "date" variable let indices = data!.indices(where: { item in let sameMonth = Calendar.current.component(.month, from: item.time) == Calendar.current.component(.month, from: date) let sameYear = Calendar.current.component(.year, from: item.time) == Calendar.current.component(.year, from: date) let sameDay = Calendar.current.component(.day, from: item.time) == Calendar.current.component(.year, from: date) return sameDay && sameMonth && sameYear }) However, the indices(where:) codeblock seems to stop the app from compiling (ONLY on Swift Playgrounds - it works perfectly fine on XCode). I am getting the following error: Cannot call value of non-function type 'Range<Array<Int>.Index>' (aka 'Range<Int>') Please let me know if you have any insight regarding this issue. -ColoredOwl
2
1
539
Jan ’25