Post

Replies

Boosts

Views

Activity

Reply to ShareLink and DataRepresentation
My I add that using FileRepresentation instead of DataRepresentation has the same effect: extension FuelUpsArchive: Transferable {     static var transferRepresentation: some TransferRepresentation {         FileRepresentation(contentType: .commaSeparatedText) {             SentTransferredFile($0.file)         } importing: { received in             try! self.init(csvData: Data())         }     } }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jun ’22
Reply to Set filename to use for "Save to Files" with ShareLink?
Additionally, if I use my custom type instead of .json when exporting, the "Save to Files" doesn't even show up, even if I did set the export type in the info.plist file. extension UTType {     static var car: UTType = UTType(exportedAs: "com.acme.cararchive") } extension Car: Transferable {     static var transferRepresentation: some TransferRepresentation {         DataRepresentation(contentType: .car) { archive in             try JSONEncoder().encode(archive)         } importing: { data in             try JSONDecoder().decode(Car.self, from: data)         }     } } fefe
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Oct ’22
Reply to Set filename to use for "Save to Files" with ShareLink?
Ok so I made some progress. Turns out I was using com.public.data instead of public.data in Exported Type Identifier > Conform To. So now saving to files will use the proper file extension (.cararchive) I've set in Exported Type Identifier > Extensions. However, the filename defaults to what I've set in Exported Type Identifier > Description. I'd like to set a default name myself as the one used by iOS makes no sense.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Oct ’22
Reply to ShareLink + FileRepresentation: Can't Save to Files
I would tend to think that the issue is with the try! statement. write(to:) can throw, which is probably the case here. Force unwrapping probably causes the crash. Here's an example of an implementation that works (at least on my end): static var transferRepresentation: some TransferRepresentation {         FileRepresentation(contentType: .myArchive) { archive in             let url = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).appendingPathComponent(archive.fileName)             let res = try JSONEncoder().encode(archive)             try res.write(to: url, options: .atomicWrite)             return SentTransferredFile(url)         } importing: { received in             let data = try Data(contentsOf: received.file)             return try JSONDecoder().decode(MyArchive.self, from: data)         }     }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Oct ’22
Reply to SwiftUI window aspect ratio
Another solution that seems to work is to use NSViewControllerRepresentable to create a NSViewController based view. When viewDidAppear is called, you can set the NSWindowDelegate to self to receive window events and set the aspect ratio.
Topic: UI Frameworks SubTopic: AppKit Tags:
Dec ’22