I use UIHostingController inside my UIViewController to present a SwiftUI View. I have a button in that view which I want to tap and dismiss the presented view. How do I dimiss SwiftUI views when presented in a UIHostingController...{
let vc = UIHostingController(rootView: SwiftUIView())
present(vc, animated: true, completion: nil)
}struct SwiftUIView : View {
var body: some View {
CustomButton()
}
}struct CustomButton: View {
var body: some View {
Button(action: {
self.buttonAction()
}) {
Text(buttonTitle)
}
}
func buttonAction(){
//dismiss the SwiftUIView when this button pressed
}
}
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
From the Internet I read that URLRequest sends an Accept-Encoding header by default. I also read that URLSession auto decompresses any data that’s returned compressed. However these are what the internet says. I go to the Apple docs and read the URLSession & URLRequest sections but I can’t find where does it say that it sends the Accept-Encoding headers by default or that it auto decompresses compressed data. I know it does the latter as I am able to parse compressed data and have to do nothing to decompress. Just tell me where this stuff is documented by Apple so I can read about it.
I have a loop that iterates all pages in a PDF and saves parts of its content into core data. Problem seems to be that each PDFPage takes up around 30mb+ of memory. This memory is not retuned when the loop moves to ther next page. with large enough PDF in can cause out of memory crash.At first I thought it was something in the loop holidng a reference. However when I dont run the loop, or attempt to save any of the PDFPage contents and simply swipe through the PDFPages of the PDF, the memory still goes up 30mb + per page. So my question is how to clear the previous page from memory when no longer the page in view?I would add code but seems you cant pste into here so jist know its basic PDFKit code to load a pdf url
My database has over 100k entries and anytime I access it either via @Query or a custom Fetch request it freezes my apps UI for 10+ second.
My first question is anyone having performance issues with large data sets. If so how have you found to resolve it ?
My next question is does swiftUI load the entire database into memory with the @Query. As I feel it is seeing as my app becomes very slow and partially unresponsive.
lastly if I have 2 data models and 1 has a to many relationship to the other are both loaded into memory even though only @Query 1?
consider datamodels
model1 {
var name : String
@Relationship(deleteRule:.cascade) var lotsOfData :[LotsOfData]
init....
}
LotsOfData{
var element1 : String
var element2 : String
var element3 : String
var element4 : String
var element4 : String
init ….
}
LotsOfData has 100K instances in the database.
if I @Query into model1 because it references LotsOfData through A relationship is all that data all called / loaded ?
thanks for the information
So I am trying to sync only some of my Models with iCloud and others kept locally in the default.store. I am having a world of issues so before I start looking for the needle in my haystack. I would like to ask this forum, is my approach one that should work as desired or is my code obviously why things are not working? All my Models have default values and relationships where needed are optionals. iCloud is working but my issue arises when i try to exclude some models. So I want to sync "modelsForCloudSyncing" but not "modelNotForCloudSyncing" In advance thank you
var avoidCloudSyncModelContainer : ModelContainer = {
let modelNotForCloudSyncing = Schema([NoCloudSyncModel.self])
let modelConfigForNoCloudSync = ModelConfiguration(schema: modelNotForCloudSyncing, cloudKitDatabase: .none)
let modelsForCloudSyncing = Schema([CloudSyncModelA.self, CloudSyncModelB.self, CloudSyncModelC.self])
let modelConfigForCloudSync = ModelConfiguration(schema: modelsForCloudSyncing, cloudKitDatabase: .automatic)
do {
return try ModelContainer(for: NoCloudSyncModel.self, CloudSyncModelA.self, CloudSyncModelB.self, CloudSyncModelC.self, configurations: modelConfigForNoCloudSync, modelConfigForCloudSync)
}
catch { fatalError("Could not create ModelContainer: \(error)") }
}()
...
{
ContentView()
}.modelContainer(avoidCloudSyncModelContainer)
Feedback Submitted FB13898610
Xcode crashes with below. Pressing the "-" to remove a package dependancy.
Solutions most welcome
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process: Xcode [27376]
Application Specific Information:
abort() called
Application Specific Signatures:
NSInvalidArgumentException
Application Specific Backtrace 0:
0 CoreFoundation 0x00007ff815134dc6 __exceptionPreprocess + 242
1 DVTFoundation 0x000000011257fd3e DVTFailureHintExceptionPreprocessor + 448
2 libobjc.A.dylib 0x00007ff814c24e9d objc_exception_throw + 48
3 CoreFoundation 0x00007ff81504f400 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 604
4 CoreFoundation 0x00007ff81504f18a +[NSDictionary dictionaryWithObjects:forKeys:count:] + 49
5 DevToolsCore 0x000000012118ca09 -[PBXTarget removePackageProductDependencies:] + 1053
6 DevToolsCore 0x00000001211b1c65 -[PBXTarget packageReferenceWillBeRemoved:] + 273
7 CoreFoundation 0x00007ff8150b742a -[NSArray makeObjectsPerformSelector:withObject:] + 252
8 DevToolsCore 0x000000012116200c -[PBXProject(PBXTargetedNotifications) packageReferenceWillBeRemoved:] + 267
9 DevToolsCore 0x0000000121157026 -[PBXProject removePackageReference:] + 219
10 Xcode3UI 0x0000000128db10c8 __56-[Xcode3PackageReferenceListViewController removeItems:]_block_invoke + 319
11 Xcode3UI 0x0000000128db0c7b -[Xcode3PackageReferenceListViewController removeItems:] + 1925
12 AppKit 0x00007ff81891e34d -[NSApplication(NSResponder) sendAction:to:from:] + 337
13 IDEKit 0x00000001162a8e5f __37-[IDEApplication sendAction:to:from:]_block_invoke + 315
14 DVTFoundation 0x000000011257f51d DVTInvokeWithFailureHint + 78
15 IDEKit 0x0000000116202bc0 -[IDEApplicationController application:setFailureHintMessage:duringBlock:] + 118
16 IDEKit 0x00000001162a8f2b -[IDEApplication _invokeWithFailureHint:block:] + 105
17 IDEKit 0x00000001162a8cb8 -[IDEApplication sendAction:to:from:] + 333
18 AppKit 0x00007ff81891e1c3 -[NSControl sendAction:to:] + 86
19 AppKit 0x00007ff81891e0f5 __26-[NSCell _sendActionFrom:]_block_invoke + 131
20 AppKit 0x00007ff81891dffe -[NSCell _sendActionFrom:] + 171
21 AppKit 0x00007ff81891df46 -[NSButtonCell _sendActionFrom:] + 96
22 AppKit 0x00007ff81891ae32 NSControlTrackMouse + 1823
23 AppKit 0x00007ff81891a6ef -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 125
24 AppKit 0x00007ff81891a5b6 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 666
25 AppKit 0x00007ff8189199ab -[NSControl mouseDown:] + 666
26 AppKit 0x00007ff818918353 -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 4582
27 AppKit 0x00007ff818891177 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 313
28 AppKit 0x00007ff818890e23 -[NSWindow(NSEventRouting) sendEvent:] + 345
29 IDEKit 0x0000000116269d6a -[IDEWorkspaceWindow sendEvent:] + 158
30 AppKit 0x00007ff819043470 -[NSApplication(NSEventRouting) sendEvent:] + 1456
31 IDEKit 0x00000001162a8a7f -[IDEApplication sendEvent:] + 308
32 AppKit 0x00007ff818bfe8de -[NSApplication _handleEvent:] + 65
33 AppKit 0x00007ff81872209a -[NSApplication run] + 640
34 IDEKit 0x00000001162a888a -[IDEApplication run] + 54
35 AppKit 0x00007ff8186f5ff3 NSApplicationMain + 816
36 dyld 0x00007ff814c59366 start + 1942
Kernel Triage:
VM - (arg = 0x3) mach_vm_allocate_kernel failed within call to vm_map_enter
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x7ff814fac14a __pthread_kill + 10
1 libsystem_pthread.dylib 0x7ff814fe4ebd pthread_kill + 262
2 libsystem_c.dylib 0x7ff814f0aa79 abort + 126
3 IDEKit 0x116226509 +[IDEAssertionHandler _handleAssertionWithLogString:assertionSignature:assertionReason:extraBacktrace:] + 1178
4 IDEKit 0x1162278c3 -[IDEAssertionHandler handleUncaughtException:] + 749
5 IDEKit 0x116227c00 IDEHandleUncaughtException + 94
6 IDEKit 0x1162a9370 -[IDEApplication reportException:] + 79
7 AppKit 0x7ff818722129 -[NSApplication run] + 783
8 IDEKit 0x1162a888a -[IDEApplication run] + 54
9 AppKit 0x7ff8186f5ff3 NSApplicationMain + 816
10 dyld 0x7ff814c59366 start + 1942
Is SwiftData not designed for large datasets? How to create many instances of my Data Model?
I have a loop where I iterate over a CSV file of 30k+ lines. Totalling around 230k elements. I intend to save this data into SwiftData. However it takes around 90 seconds. In previous versions of my app I was using coreData. Then it took just 3 seconds. So after much investigation I have concluded the delay comes from creating instances of the Data Model. To Test this I have :
Removed any saves into SwiftData. So only creation of the Model Object occurs.
Created an exact copy of the SwiftData Model class but admitted the @Model macro
set isAutosaveEnabled to false
When I run my loop with the copy class it takes 3 seconds. So It must be creating the SwiftData model instances that causes the *30 delay.
The code using swiftData @Model. This loop takes 90+ seconds to complete
class TimetableData {
var arrivalTime : Int = 0
var departureTime: Int = 0
var departureRoute : Int = 0
var directionOfTravel : Int = 0
var dutyNumber : Int = 0
var facilityIdentifier : String = ""
var locationType : String = ""
var mode : String = ""
var nonStopStatus : Int = 0
var recordIdentifier : String = ""
var timetableIdentifier : Int = 0
var trainNumber : String = ""
var tripNumber : Int = 0
var tripStartSite : String = ""
var uniqueLocationCode : String = ""
init(arrivalTime: Int = 0, departureTime: Int = 0, departureRoute: Int = 0, directionOfTravel: Int = 0, dutyNumber: Int = 0, facilityIdentifier: String = "", locationType: String = "", mode: String = "", nonStopStatus: Int = 0, recordIdentifier: String = "", timetableIdentifier: Int = 0, trainNumber: String = "", tripNumber: Int = 0, tripStartSite: String = "", uniqueLocationCode: String = "") {
self.name = name
self.arrivalTime = arrivalTime
self.departureTime = departureTime
self.departureRoute = departureRoute
self.directionOfTravel = directionOfTravel
self.dutyNumber = dutyNumber
self.facilityIdentifier = facilityIdentifier
self.locationType = locationType
self.mode = mode
self.nonStopStatus = nonStopStatus
self.recordIdentifier = recordIdentifier
self.timetableIdentifier = timetableIdentifier
self.trainNumber = trainNumber
self.tripNumber = tripNumber
self.tripStartSite = tripStartSite
self.uniqueLocationCode = uniqueLocationCode
}
}
for line in CSVFile {
var columnValue = line.components(separatedBy: ",")
let timeTableDataEntry = TimetableData (
arrivalTime: Int(columnValue[0])!,
departureTime: Int(columnValue[1])!,
departureRoute: Int(columnValue[2])!,
directionOfTravel: Int(columnValue[3])!,
dutyNumber: Int(columnValue[4])!,
facilityIdentifier: columnValue[5],
locationType: columnValue[6],
mode: columnValue[7],
nonStopStatus: Int(columnValue[8])!,
recordIdentifier: columnValue[9],
timetableIdentifier: Int(columnValue[10])!,
trainNumber: columnValue[11],
tripNumber: Int(columnValue[12])!,
tripStartSite: columnValue[13],
uniqueLocationCode:columnValue[14]
)
}
Then The exact same code but omitting the @Model takes around just 3 second.
class TimetableDataForTesting {
var arrivalTime : Int = 0
var departureTime: Int = 0
var departureRoute : Int = 0
var directionOfTravel : Int = 0
var dutyNumber : Int = 0
var facilityIdentifier : String = ""
var locationType : String = ""
var mode : String = ""
var nonStopStatus : Int = 0
var recordIdentifier : String = ""
var timetableIdentifier : Int = 0
var trainNumber : String = ""
var tripNumber : Int = 0
var tripStartSite : String = ""
var uniqueLocationCode : String = ""
init(arrivalTime: Int = 0, departureTime: Int = 0, departureRoute: Int = 0, directionOfTravel: Int = 0, dutyNumber: Int = 0, facilityIdentifier: String = "", locationType: String = "", mode: String = "", nonStopStatus: Int = 0, recordIdentifier: String = "", timetableIdentifier: Int = 0, trainNumber: String = "", tripNumber: Int = 0, tripStartSite: String = "", uniqueLocationCode: String = "") {
self.name = name
self.arrivalTime = arrivalTime
self.departureTime = departureTime
self.departureRoute = departureRoute
self.directionOfTravel = directionOfTravel
self.dutyNumber = dutyNumber
self.facilityIdentifier = facilityIdentifier
self.locationType = locationType
self.mode = mode
self.nonStopStatus = nonStopStatus
self.recordIdentifier = recordIdentifier
self.timetableIdentifier = timetableIdentifier
self.trainNumber = trainNumber
self.tripNumber = tripNumber
self.tripStartSite = tripStartSite
self.uniqueLocationCode = uniqueLocationCode
}
}
for line in CSVFile {
var columnValue = line.components(separatedBy: ",")
let timeTableDataEntry = TimetableDataForTesting (
arrivalTime: Int(columnValue[0])!,
departureTime: Int(columnValue[1])!,
departureRoute: Int(columnValue[2])!,
directionOfTravel: Int(columnValue[3])!,
dutyNumber: Int(columnValue[4])!,
facilityIdentifier: columnValue[5],
locationType: columnValue[6],
mode: columnValue[7],
nonStopStatus: Int(columnValue[8])!,
recordIdentifier: columnValue[9],
timetableIdentifier: Int(columnValue[10])!,
trainNumber: columnValue[11],
tripNumber: Int(columnValue[12])!,
tripStartSite: columnValue[13],
uniqueLocationCode:columnValue[14]
)
}
There's another thread on here with similar Q but seems to have no resolution. So starting my own.
The basics
Xcode 15.3.0 beta 3
iOS 17.4
The WatchOS 10.4
I have an iPhone app with a companion watch app. In Xcode if I set the scheme to my iOS app it installs on my phone but the companion watch app does not auto install on my watch. Automatic App Install is turned on in Watch app on iPhone. To run the app on watchOS I have to run it directly from the watch scheme on Xcode. If I delete the app from the watch then go into the iOS watch app on the iOS device to install on my watch I receive an error "This app could not be installed at this time"
Is there a known cause solution?
With NSFetchRequest of coreData it was possible to only return distinct results from the database with .returnsDistinctResults
What if any is the fetch equivalent in SwiftData ?
currently I'm appending entries into a Set<String>. Only with over 200k rows and no newBackgroundContext() in SwiftData the UI is locked for a number of seconds
cant see where to delete posts
2 versions 1 works 1 doesn't. UIViewRepresentable to show a PDF
@AppStorage(DefaultsKey.userActiveBook.rawValue) var activeBook : URL = Bundle.main.url(forResource: "BookPlaceHolder", withExtension: "pdf")!
func makeUIView(context: Context) -> PDFView {
do {
let pdfData = try Data(contentsOf: activeBook)
pdfView.document = PDFDocument(data: pdfData) //<---- is nil
...
}
catch let Error {
print(Error)
}
}
fails with
Error Domain=NSCocoaErrorDomain Code=260 "The file “BookPlaceHolder.pdf” couldn’t be opened because there is no such file."
func makeUIView(context: Context) -> PDFView {
do {
let pdfData = try Data(contentsOf: Bundle.main.url(forResource: "BookPlaceHolder", withExtension: "pdf")!)
pdfView.document = PDFDocument(data: pdfData)
...
}
catch let Error {
print(Error)
}
}
Works perfectly.
What is it with using @AppStorage to access the exact same URL causing the discrepancies ?
How often/ under what circumstances are users sandbox directory URL's changed?
So I tried to save a URL to a document in @AppStorage
@AppStorage(DefaultsKey.userActiveBook.rawValue) var activeBook : URL = Bundle.main.url(forResource: "BookPlaceHolder", withExtension: "pdf")!
When user selects a new document activeBook is updated with the new URL.
Issue is when the app relaunches from xCode the path to whatever is stored in activeBook changes. My work around so far is to just access the users Documents Directory via FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!. Then appending the last path component of activeBook.
sidebar: obviously this doesn't work if the saved URL in activeBook is still the default from Bundle.main.url. I haven't written that workaround as yet.
Am I only seeing issues in development due to a fresh relaunch via xCode?
If the user only ever terminates the app on their device are the .documentDirectory URL's changing on each launch or do the remain constant?
I don't want to write a workaround to ensure the correct URL for whats stored in @AppStorage, if the changing URL's only occurs due to launching from xCode which the end user wont ever encounter that edge case.
Submitted a TSI 4 days ago. Heard nothing back. Status Used. Surely a TSI is a fulfilled request and not just ignored?
Also the forum tags don't have TSI so not sure where this post will end up
Is there a system deep link URI to the built in files app? I would like to direct users to my apps location in the files app. For example files://myApp
The only exposed deep links for system I can find are the ones for mail, sms, FaceTime etc.
Thank you
(tag used for post was because I couldn’t find a deep link tag)
FB13955415
Calls to openURL in iOS 18 beta 22A5282m fails to launch browser.
Is this a bug?