Post

Replies

Boosts

Views

Activity

Get Xcode to span multiple displays!
I'm using sidecar as a second display and have "displays as separate windows off" and restarted! Why does apple insist on clipping the windows too locations I did not specify even using Option key still clips the window to one window not spanning both windows! when using a PC this is very simple on MacOS it seems Apple has made it a pain to do something so simple!
1
0
1.7k
Sep ’20
Why is Xcode failing to build on device?
I'm sick of Xcode failing to build on my registered device! What the heck is Xcode's problem now? Unable to install "" Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620388 - No code signature found. Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620388 User Info: {     DVTRadarComponentKey = 261622;     MobileDeviceErrorCode = "(0xE800801C)";     "com.apple.dtdevicekit.stacktrace" = ( 0   DTDeviceKitBase                     0x00000001259a193f DTDKCreateNSErrorFromAMDErrorCode + 220 1   DTDeviceKitBase                     0x00000001259e0124 __90-[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:]_block_invoke + 155 2   DVTFoundation                       0x0000000108bbcb43 DVTInvokeWithStrongOwnership + 71 3   DTDeviceKitBase                     0x00000001259dfe65 -[DTDKMobileDeviceToken installApplicationBundleAtPath:withOptions:andError:withCallback:] + 1440 4   IDEiOSSupportCore                   0x0000000125850d28 __118-[DVTiOSDevice(DVTiPhoneApplicationInstallation) processAppInstallSet:appUninstallSet:installOptions:completionBlock:]_block_invoke.292 + 3513 5   DVTFoundation                       0x0000000108ceb2aa DVT_CALLING_CLIENT_BLOCK + 7 6   DVTFoundation                       0x0000000108cececc __DVTDispatchAsync_block_invoke + 1191 7   libdispatch.dylib                   0x00007fff201cd52d _dispatch_call_block_and_release + 12 8   libdispatch.dylib                   0x00007fff201ce717 _dispatch_client_callout + 8 9   libdispatch.dylib                   0x00007fff201d454e _dispatch_lane_serial_drain + 606 10  libdispatch.dylib                   0x00007fff201d501b _dispatch_lane_invoke + 375 11  libdispatch.dylib                   0x00007fff201deb9b _dispatch_workloop_worker_thread + 819 12  libsystem_pthread.dylib             0x00007fff2034d4f2 _pthread_wqthread + 314 13  libsystem_pthread.dylib             0x00007fff2034c4c3 start_wqthread + 15 ); } - System Information macOS Version 11.0 (Build 20A5374g) Xcode 12.0.1 (17220)
0
0
548
Oct ’20
Loading json remotely into SwiftUI ListView
I'm using this documentation as my base https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation I'm failing to understand how I would simply adapt the app to load the json remotely import Foundation var landmarks: [Landmark] = load("landmarkData.json") func load<T: Decodable>(_ filename: String) -> T {     let data: Data     guard let file = Bundle.main.url(forResource: filename, withExtension: nil)         else {             fatalError("Couldn't find \(filename) in main bundle.")     }     do {         data = try Data(contentsOf: file)     } catch {         fatalError("Couldn't load \(filename) from main snippet from Model data.swift the only example I've found is included below, however it's using an entirely different setup and does not use a detail view. import SwiftUI import Combine struct ContentView: View { @ObservedObject var fetcher = MovieFetcher() var body: some View {     VStack {         List(fetcher.movies) { movie in             VStack (alignment: .leading) {                 Text(movie.name)                 Image(movie.thumbnail)                 Text(movie.released)                     .font(.system(size: 11))                     .foregroundColor(Color.gray)             }         }     } } } public class MovieFetcher: ObservableObject { @Published var movies = [Movie]() init(){     load() } func load() {     let url = URL(string: "https://wolvideos.web.app/videos.js")!     URLSession.shared.dataTask(with: url) {(data,response,error) in         do {             if let d = data {                 let decodedLists = try JSONDecoder().decode([Movie].self, from: d)                 DispatchQueue.main.async {                     self.movies = decodedLists                 }             }else {                 print("No Data")             }         } catch {             print ("Error")         }              }.resume()       } } struct Movie: Codable, Identifiable { public var id: Int public var name: String public var thumbnail: String public var released: String enum CodingKeys: String, CodingKey {        case id = "id"        case name = "name"        case thumbnail = "thumbnail"        case released = "description"     } } struct ContentView_Previews: PreviewProvider { static var previews: some View {     ContentView() } } If possible can someone explain how and the best way to load a json file and then let the app format it into detail views?
2
0
2k
Jul ’21
Simple way to load json remotely from server?
I've followed several tutorials and nothing works or is remotely simple. can anyone perhaps link a json tutorial that can load the following in a "SWIFT UI" format? { "id": 182, "name": "message 2048", "interactive": "https://wolvideos.firebaseapp.com/Test1.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 1", "videolink": "https://player.vimeo.com/external/656370948.m3u8?s=e50ca2b440798886646ba88a07e9c46a90c9df11", "sharelink": "https://youtu.be/n7YjxFCyDNQ" }, { "id": 180, "name": "Title 4", "interactive": "https://wolvideos.firebaseapp.com/Test2.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 2", "videolink": "https://player.vimeo.com/external/653500077.m3u8?s=96c687bef62bfd01ea195e4113e197ebd8d09143", "sharelink": "https://youtu.be/n7YjxFCyDNQ" }, { "id": 172, "name": "Titil 20203", "interactive": "https://wolvideos.firebaseapp.com/Test1.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 1", "videolink": "https://player.vimeo.com/external/656370948.m3u8?s=e50ca2b440798886646ba88a07e9c46a90c9df11", "sharelink": "https://youtu.be/n7YjxFCyDNQ" }, { "id": 171, "name": "Title 20part2", "interactive": "https://wolvideos.firebaseapp.com/Test2.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 2", "videolink": "https://player.vimeo.com/external/653500077.m3u8?s=96c687bef62bfd01ea195e4113e197ebd8d09143", "sharelink": "https://youtu.be/n7YjxFCyDNQ" }, { "id": 170, "name": "Title 2021", "interactive": "https://wolvideos.firebaseapp.com/Test1.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 1", "videolink": "https://player.vimeo.com/external/656370948.m3u8?s=e50ca2b440798886646ba88a07e9c46a90c9df11", "sharelink": "https://youtu.be/n7YjxFCyDNQ" }, { "id": 169, "name": "Title 2020", "interactive": "https://wolvideos.firebaseapp.com/Test2.mp4", "thumbnail": "https://wolvideos.firebaseapp.com/back.jpg", "date": "April 2", "videolink": "https://player.vimeo.com/external/653500077.m3u8?s=96c687bef62bfd01ea195e4113e197ebd8d09143", "sharelink": "https://youtu.be/n7YjxFCyDNQ" } ] https://wolvideos.firebaseapp.com/Simple.json
3
0
1.8k
Jun ’22
Building a json app that plays videos (troubleshooting and better ways)
I've been watching various tutorials and have managed to come up with the following code: import SwiftUI import AVKit struct ContentView: View {     @State private var wolData = [Main]()          var body: some View {                  NavigationView{List(wolData, id: \.id) { item in             NavigationLink(destination: MainDetail(json: item)) {                                  HStack() {                     Text(item.name)                         .font(.headline)                     Text(item.date)                         .font(.footnote)                     if #available(iOS 15.0, *) {                         AsyncImage(url: URL(string: item.thumbnail))                         { image in                             image                                 .resizable()                                 .scaledToFill()                         } placeholder: {                             Color.purple.opacity(0.1)                         }                         .frame(width: 20, height: 20)                     } else {                         // Fallback on earlier versions                     }                 }                              }                      }.onAppear(perform: loadData)}              }           } extension ContentView {     func loadData() {                  guard let url = URL(string: "https://wolvideos.firebaseapp.com/Simple.json") else {             return         }                  let request = URLRequest(url: url)         URLSession.shared.dataTask(with: request) { data, response, error in                          if let data = data {                 if let response_obj = try? JSONDecoder().decode([Main].self, from: data) {                                          DispatchQueue.main.async {                         self.wolData = response_obj                     }                 }             }                      }.resume()     } } struct ContentView_Previews: PreviewProvider {     static var previews: some View {         ContentView()     } } import Foundation struct Main: Decodable {     var id: Int     var name: String     var interactive: String     var thumbnail: String     var date: String     var videolink: String     var sharelink: String } import SwiftUI import AVKit struct MainDetail: View {     var json: Main    private let player = AVPlayer(url: URL(string: "https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8")!)        var body: some View {      VideoPlayer(player: player)             .onAppear() {                 // Start the player going, otherwise controls don't appear                 player.play()             }             .onDisappear() {                 // Stop the player when the view disappears                 player.pause()             }    } } Now that I've shared that, the intent is to when the user clicks an option load the corresponding video (from the json not the current test file) via HLS in a default player (like the one in safari)... should I be going about this in a different way? I'm starting to think committing to SwiftUI is a mistake.
0
0
863
Jun ’22
passing json video link to avplayer
I'm attempting to simply pass the video link inside the json to the navigation menu... my brain is fried as I'm lost in why I can't do this view the navigation link protocol. import SwiftUI import AVKit struct MainDetail: View {          var json: Main         private let player = AVPlayer(url: URL(string: item.interactive))        var body: some View {      VideoPlayer(player: player)             .onAppear() {                 // Start the player going, otherwise controls don't appear                 player.play()             }             .onDisappear() {                 // Stop the player when the view disappears                 player.pause()             }    } } this returns a "Cannot find 'item' in scope" despite being declared back on the main content view. the intended action is loading the "interactive" link (m3u8 file) in a player view when clicked on. I apologize for not understanding what's going on here.
0
0
669
Jun ’22
Load link from tab bar item
is it possible to load a link such as Link("Apple", destination: URL(string: "https://www.apple.com")!) from a tab bar item? if so how? struct MainView: View {      @State private var selectedTab = "Three"        var body: some View {         TabView(selection: $selectedTab) {           LiveView()               .tabItem {                   Label("LIVE", systemImage: "camera.metering.center.weighted")                   .font(Font.title.weight(.ultraLight))               }               .tag("One") if I add an link or text I get errors. I appreciate any help!
3
0
1.3k
Jul ’22
Is it possible to convert this to using just play view for links in 16?
here is the code: struct LiveView: View {      @State var allowsInlineMediaPlayback: Bool = false      var body: some View {            VStack {                  VideoView(videoID:"vimeo.com/event/000000/embed")                  }                }            } struct VideoView: UIViewRepresentable {      let videoID: String      func makeUIView(context: Context) -> WKWebView {       let configuration = WKWebViewConfiguration()       configuration.allowsInlineMediaPlayback = true       let WKWebView = WKWebView(frame: .zero, configuration: configuration)       return WKWebView        }      func updateUIView(_ uiView: WKWebView, context: Context) {     guard let youtubeURL = URL(string: "https://\(videoID)") else     {return}     uiView.load(URLRequest (url: youtubeURL))   } } Is their a better way to accomplish feeding a live event link into a playerview instead of needing a WKWebView?
0
0
872
Jul ’22
MapKit does not scale on iPad
I'm very frustrated. Why does the code work on the iPhone but iPad completely disregards anything code modifying MapKit? import SwiftUI import MapKit struct MapView: View {     var coordinate: CLLocationCoordinate2D     @State private var region = MKCoordinateRegion()     var body: some View {         Map(coordinateRegion: $region)         .edgesIgnoringSafeArea(.all)         .frame(maxWidth: .infinity, maxHeight: .infinity)             .onAppear {                 setRegion(coordinate)             }     }     private func setRegion(_ coordinate: CLLocationCoordinate2D) {         region = MKCoordinateRegion(             center: coordinate,             span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)         )     } } struct MapView_Previews: PreviewProvider {     static var previews: some View {         MapView(coordinate: CLLocationCoordinate2D(latitude: 34.000, longitude: -116.000))         .previewDevice(PreviewDevice(rawValue: "iPhone 12 Pro Max"))     } }
2
0
1.9k
Aug ’22
Share button will not move to the right.
I'm running on fumes but logically this view should be showing the share button on the bottom right, and the Title/Date/PlayButton in the middle? What am I doing wrong? It currently just shows the share button underneath import SwiftUI import AVKit struct ContentView: View {     @State private var items = [Item]()     @State private var currentPage = 0     var body: some View {         TabView(selection: $currentPage) {             ForEach(items, id: \.id) { item in                 VideoPlayerView(url: item.interactive)                     .aspectRatio(contentMode: .fill)                     .tag(item.id)                     .onAppear {                         let controller = AVPlayerViewController()                         controller.player = AVPlayer(url: URL(string: item.interactive)!)                         controller.showsPlaybackControls = false                         controller.player?.play()                     }                     .overlay(                         VStack() {                             Spacer()                             Text(item.name)                                 .font(.title)                             Text(item.date)                                 .font(.caption)                             Button(action: {                                 let player = AVPlayer(url: URL(string: item.videolink)!)                                 let playerController = AVPlayerViewController()                                 playerController.player = player                                 playerController.showsPlaybackControls = true                                 UIApplication.shared.windows.first?.rootViewController?.present(playerController, animated: true, completion: {                                     player.play()                                 })                             }) {                                 HStack(spacing: 5) {                                     Text("PLAY")                                     Image(systemName: "play.circle")                                 }                                 .padding(.horizontal, 10)                                 .padding(.vertical, 5)                                 .background(Color.white)                                 .foregroundColor(.black)                                 .cornerRadius(20)                             }                             Button(action: {                                 let activityVC = UIActivityViewController(activityItems: [URL(string: item.sharelink)!], applicationActivities: nil)                                 UIApplication.shared.windows.first?.rootViewController?.present(activityVC, animated: true, completion: nil)                             }) {                                 Image(systemName: "square.and.arrow.up.circle")                                     .foregroundColor(.black)                             }                             .padding(.bottom, 50)                         }                     )             }         }         .tabViewStyle(.page)         .onAppear(perform: loadData)         .gesture(DragGesture()             .onEnded { value in                 let offset = value.translation.width / UIScreen.main.bounds.width                 let newIndex = (CGFloat(currentPage) - offset).rounded()                 currentPage = min(max(Int(newIndex), 0), items.count - 1)             }         )     }     func loadData() {         guard let url = URL(string: "jsonfile") else { return }         URLSession.shared.dataTask(with: url) { data, response, error in             guard let data = data else { return }             do {                 let decoder = JSONDecoder()                 let items = try decoder.decode([Item].self, from: data)                 DispatchQueue.main.async {                     self.items = items                 }             } catch {                 print(error.localizedDescription)             }         }.resume()     } } struct VideoPlayerView: UIViewRepresentable {     let url: String          func makeUIView(context: Context) -> AVPlayerView {         let view = AVPlayerView()         view.playerLayer.player = AVPlayer(url: URL(string: url)!)         view.playerLayer.videoGravity = .resizeAspectFill         view.playerLayer.backgroundColor = UIColor.black.cgColor         view.playerLayer.player?.play()         return view     }          func updateUIView(_ uiView: AVPlayerView, context: Context) {         // Nothing to update     } } class AVPlayerView: UIView {     override class var layerClass: AnyClass {         return AVPlayerLayer.self     }          var playerLayer: AVPlayerLayer {         return layer as! AVPlayerLayer     }          override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {         let hitView = super.hitTest(point, with: event)         return hitView == self ? nil : hitView     } } struct Item: Codable, Identifiable {     let id: Int     let name: String     let interactive: String     let thumbnail: String     let date: String     let videolink: String     let sharelink: String }
1
0
771
Mar ’23
unable to delete file because it's never found because.
my mind is shot. core data hasn't been my cup of tea. print("saveTrigger called with trigger: \(trigger)") let encoder = JSONEncoder() let fm = FileManager.default let documentsDirectory = fm.urls(for: .documentDirectory, in: .userDomainMask).first! let reflectionsURL = documentsDirectory.appendingPathComponent("reflections.json") let triggersDirectory = documentsDirectory.appendingPathComponent("Triggers") // Create a new reflections file if it doesn't exist if !fm.fileExists(atPath: reflectionsURL.path) { let emptyData = Data() fm.createFile(atPath: reflectionsURL.path, contents: emptyData, attributes: nil) } // Write the trigger to the reflections file do { let data = try encoder.encode(trigger) try data.write(to: reflectionsURL) print("Trigger saved to device: \(trigger)") print("Reflections file URL: \(reflectionsURL)") } catch { print("Failed to save trigger: \(error)") } // Find the trigger file with the UUID inside the file let triggerFileURL = triggersDirectory.appendingPathComponent("\(trigger.id).json") if fm.fileExists(atPath: triggerFileURL.path) { do { let data = try Data(contentsOf: triggerFileURL) let uuid = try JSONDecoder().decode(UUID.self, from: data) let uuidString = uuid.uuidString let matchingTriggerFileURL = triggersDirectory.appendingPathComponent("\(uuidString).json") if fm.fileExists(atPath: matchingTriggerFileURL.path) { try fm.removeItem(at: matchingTriggerFileURL) print("Trigger file deleted: \(matchingTriggerFileURL.lastPathComponent)") } else { print("Trigger file not found") } } catch { print("Error deleting trigger file: \(error.localizedDescription)") } } else { print("Trigger file not found") } }
6
0
895
Sep ’23