Post

Replies

Boosts

Views

Activity

Convert Key Pairs Array To Struct
I have a key pairs array: ["Id": XmGjU9gxS5s0CzP4S6-bHw, "Name": Pizzeria La Rocca, "Url": https://www.yelp.com/biz/pizzeria-la-rocca-seattle?adjust_creative=sxCnBn1t8D3B-4MLGRB_2g&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=sxCnBn1t8D3B-4MLGRB_2g, "Rating": 5, "Img": https://s3-media1.fl.yelpcdn.com/bphoto/kE6hbIfi4WdlIW52SF5KUw/o.jpg] How do I convert this to my struct? struct RestaurantListViewModel: Identifiable {     let name: String     let imageUrl: URL     let id: String     let rating: Double     let url: String //    let category: Array<String> } Thank you in advanced!
1
0
1.1k
Sep ’21
Share Sheet in Child
Hi, How do I show a share sheet in a child view. UIApplication.shared.windows.first?.rootViewController?.present(activityVC, animated: true, completion: nil) doesn't work. Thanks in advanced!
1
0
702
Sep ’21
MKLocalSearch produces SearchAttribution Error and Error Domain=GEOErrorDomain Code=-8
Hi, I am trying to use mapkit auto completion in my SwiftUI project and whenever I run the view, I get a bunch of errors such as: 2022-02-12 19:45:59.095462-0800 Pickt[64199:2417526] [SearchAttribution] No matching attribution source found for com.timeout 2022-02-12 19:45:59.095595-0800 Pickt[64199:2417526] [SearchAttribution] No matching attribution source found for com.theculturetrip 2022-02-12 19:45:59.095822-0800 Pickt[64199:2417526] [SearchAttribution] No matching attribution source found for com.redtri 2022-02-12 19:45:59.095909-0800 Pickt[64199:2417526] [SearchAttribution] No matching attribution source found for com.fotospot 2022-02-12 19:45:59.096549-0800 Pickt[64199:2417526] [SearchAttribution] Error loading attribution info for identifier com.timeout from geod: Error Domain=GEOErrorDomain Code=-8 "No matching attribution source found for com.timeout" UserInfo={NSDebugDescription=No matching attribution source found for com.timeout} 2022-02-12 19:45:59.096679-0800 Pickt[64199:2417526] [SearchAttribution] Error loading attribution info for identifier com.theculturetrip from geod: Error Domain=GEOErrorDomain Code=-8 "No matching attribution source found for com.theculturetrip" UserInfo={NSDebugDescription=No matching attribution source found for com.theculturetrip} 2022-02-12 19:45:59.096761-0800 Pickt[64199:2417526] [SearchAttribution] Error loading attribution info for identifier com.redtri from geod: Error Domain=GEOErrorDomain Code=-8 "No matching attribution source found for com.redtri" UserInfo={NSDebugDescription=No matching attribution source found for com.redtri} 2022-02-12 19:45:59.096837-0800 Pickt[64199:2417526] [SearchAttribution] Error loading attribution info for identifier com.fotospot from geod: Error Domain=GEOErrorDomain Code=-8 "No matching attribution source found for com.fotospot" UserInfo={NSDebugDescription=No matching attribution source found for com.fotospot} and then the auto complete breaks until I dismiss and reload the view. Full Code I am in desperate need of help, thx in advance!
1
0
1.1k
Feb ’22
Add hosting view controller to UIKit View
Hi All, I am trying to add an UIHostingViewController to my UIViewController, to cover the screen. Unfortunately, I keep getting this error (Thread 1: "NSLayoutConstraint for <_TtGC7SwiftUI19UIHostingControllerV5Pickt10ViewRouter_: 0x7fa32a37c3f0>: Constraint items must each be a view or layout guide.") from my code: let controller = UIHostingController(rootView: ViewRouter(join: join, create: create, showPicker: showPicker, setMock: setMock))         controller.view.translatesAutoresizingMaskIntoConstraints = false         view.addSubview(controller.view)         view.addConstraints([             NSLayoutConstraint(item: controller,                                attribute: .top,                               relatedBy: .equal,                               toItem: view.safeAreaLayoutGuide,                               attribute: .top,                               multiplier: 1,                               constant: 0),             NSLayoutConstraint(item: controller,                                attribute: .leading,                                relatedBy: .equal,                                toItem: view.safeAreaLayoutGuide,                                attribute: .leading,                                multiplier: 1,                                constant: 0),             NSLayoutConstraint(item: controller,                                attribute: .trailing,                               relatedBy: .equal,                               toItem: view.safeAreaLayoutGuide,                               attribute: .trailing,                               multiplier: 1,                               constant: 0),             NSLayoutConstraint(item: controller,                                attribute: .bottom,                               relatedBy: .equal,                               toItem: view.safeAreaLayoutGuide,                               attribute: .bottom,                               multiplier: 1,                               constant: 0)           ])
1
0
1.2k
May ’22
Widget Kit and UserDefaults
Hi, I keep getting the error "Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols" on lines 99 and 100, here is the code: import SwiftUI import Intents import UserNotifications class Riddles {     static var text = String()     static var isWednesday = Bool()     static func largeWidget() {         Riddles.checkWeekday()         let userDefaults = UserDefaults(suiteName: "group.SetRiddle")         if Riddles.isWednesday == false {             if userDefaults?.value(forKey: "currentRiddle") != nil || userDefaults?.value(forKey: "previousRiddle") != nil {                 Riddles.text = "\(UserDefaults(suiteName: "group.SetRiddle")?.value(forKey: "currentRiddle") as! String) \n\n\(UserDefaults(suiteName: "group.SetRiddle")?.value(forKey: "previousRiddle") as! String)"             }else{                 Riddles.text = "Please open app to display riddle"             }         }else {             Riddles.text = "Please open app to display riddle"         }     }     static func mediumWidget() {         Riddles.checkWeekday()         let userDefaults = UserDefaults(suiteName: "group.SetRiddle")         if Riddles.isWednesday == true {             if userDefaults?.value(forKey: "currentRiddle") != nil {                 Riddles.text = UserDefaults(suiteName: "group.SetRiddle")?.value(forKey: "currentRiddle") as! String             }else{                 Riddles.text = "Please open app to display riddle"             }         }else {             Riddles.text = "Please open app to display riddle"         }     }     static func checkWeekday() {         let today = Date()         let calendar = Calendar(identifier: .gregorian)         let components = calendar.dateComponents([.weekday], from: today)                  if components.weekday == 4 {             Riddles.isWednesday = true         }else {             Riddles.isWednesday = false         }              } } struct Provider: IntentTimelineProvider {     func placeholder(in context: Context) -> SimpleEntry {         SimpleEntry(date: Date(), text: "", configuration: ConfigurationIntent())     }     func getSnapshot(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (SimpleEntry) -> ()) {         let entry = SimpleEntry(date: Date(), text: "", configuration: configuration)         completion(entry)     }     func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {         var entries: [SimpleEntry] = []                  // Generate a timeline consisting of five entries an hour apart, starting from the current date.         let currentDate = Date()         for hourOffset in 0 ..< 5 {             let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!             let entry = SimpleEntry(date: entryDate, text: "", configuration: configuration)             entries.append(entry)         }         let timeline = Timeline(entries: entries, policy: .atEnd)         completion(timeline)     } } struct SimpleEntry: TimelineEntry {     let date: Date     let text: String     let configuration: ConfigurationIntent } struct RiddleWidgetEntryView : View {     var entry: Provider.Entry          @Environment(\.widgetFamily) var family: WidgetFamily          @ViewBuilder     var body: some View {                  switch family {         case .systemMedium: Riddles.mediumWidget()         case .systemLarge: Riddles.largeWidget()         }         ZStack {                 Text(Riddles.text)                     .foregroundColor(.black)                     .font(Font.system(size: 20))         }     } } @main struct RiddleWidget: Widget {     let kind: String = "RiddleWidget"     var body: some WidgetConfiguration {         IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider()) { entry in             RiddleWidgetEntryView(entry: entry)         }         .configurationDisplayName("My Widget")         .description("This is an example widget.")         .supportedFamilies([.systemMedium, .systemLarge])     } } struct RiddleWidget_Previews: PreviewProvider {     static var previews: some View {         RiddleWidgetEntryView(entry: SimpleEntry(date: Date(), text: "This Weeks Riddle: ", configuration: ConfigurationIntent()))             .previewContext(WidgetPreviewContext(family: .systemSmall))     } } Thanks in advance
0
0
925
Feb ’21
How do I pull some data from store kit
Hi, I have this code in a designated file called IAP Manager to handle all things related to in-app purchases. import StoreKit import Foundation final class IAPManager: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {     static let shared = IAPManager()     private var products = [SKProduct]()     private var productBeingPurchased: SKProduct?     enum Product: String, CaseIterable {         case removeAds = "JokesRUs.RemoveAds"     }     public func fetchProducts() {         let request = SKProductsRequest(productIdentifiers: Set(Product.allCases.compactMap(({ $0.rawValue }))))         request.delegate = self         request.start()     }     func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {         products = response.products     }     func request(_ request: SKRequest, didFailWithError error: Error) {         guard request is SKProductsRequest else {             return         }         print("Product fetch request failed")     }     public func purchase(product: Product) {         guard SKPaymentQueue.canMakePayments() else {             return         }         guard let storeKitProduct = products.first(where: { $0.productIdentifier == product.rawValue }) else {             return         }                  let paymentRequest = SKPayment(product: storeKitProduct)         SKPaymentQueue.default().add(self)         SKPaymentQueue.default().add(paymentRequest)              }     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {         transactions.forEach({ transaction in             switch transaction.transactionState {             case .purchasing:                 //No op                 break             case .purchased:                 handlePurchase(transaction.payment.productIdentifier)                 break             case .failed:                 break             case .restored:                 break             case .deferred:                 break             @unknown default:                 break             }         }) }     private func handlePurchase(_ id: String) {         UserDefaults.standard.setValue(true, forKey: id)         print(id)     } } And then I have this code to call it: IAPManager.shared.purchase(product: .removeAds) The problem is I can't figure out how to get the price for the location from StoreKit. Thanks in advance!
0
0
682
Mar ’21
IAP Restore
Hi, In my app, I do all the validation locally and the documentation doesn't explain how to restore purchases when the app restores everything locally. Here is my code. Thank you for your time. Code - https://developer.apple.com/forums/content/attachment/f7000d1d-5901-4758-8b91-d4f2b3dc5a3f
0
0
615
May ’21
Alignment Issues
I have this one view that seems to be much lower than it is supposed to be. Can someone please tell me what I am doing wrong? Code Here is a link to the image(I was having trouble uploading directly) https://drive.google.com/file/d/16HIhPCrXtybbh9JD7QRbc5ccBVj9Dhiq/view?usp=sharing
0
0
673
Sep ’21