Post

Replies

Boosts

Views

Activity

Improve SearchBar
So I have a searchBar that works when you type in part of the name of a player or players and filters them but when you delete a character or more in the searchbar it does not show anything, I need help trying to add that as a condition in my func.  func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {     if searchText == "" {       parseJson()     } else if searchText != "" {       cPlayerArr = cPlayerArr.filter({ (player) -> Bool in return         player.yahooName.lowercased().contains(searchText.lowercased())       })     }     collections.reloadData()   }
9
0
783
Dec ’20
API Gives Me A Fuzzy Image
I'm trying to add an image to my project and I want it to take up most of the phone's screen but my issue is the resolution is very low and the image is fuzzy, the image is originally small but I am wondering if there are any tricks you can do with swift to make the resolution better at larger sizes. I tried a rounded image but that did not help me.
1
0
451
Jan ’21
Protocol Not Working
I'm trying to transfer a tableview cell from my hockeydetailVC to my favouritesVC using a button and I can't transfer it due to some issue. My hockeydetailVC protocol addThis {   func addFav(data: CurrentPlayers) } I'm trying to transfer my item object var item: CurrentPlayers?	   var delegate: addThis? = nil	 func sendData() {     if delegate != nil {       let data = item!       delegate?.addFav(data: data)       print("This is the data being transferred: \(data)")     }   }       @IBAction func addToFav(_ sender: Any) {     sendData()     print("Favourite button Pressed")   } My favouritesVC  var currentFav: CurrentPlayers? func addFav(data: CurrentPlayers) {     currentFav = data   } I have a segue for my button so I have this   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {   if segue.identifier == "r" {     let hockeyDetailVC: HockeyDetailVC = segue.destination as! HockeyDetailVC     hockeyDetailVC.delegate = self   }  } If the transfer works then my sendData() method up top would print a statement but my addToFav only prints "favourite button pressed".
19
0
1.2k
Feb ’21
Core Data Make Decodable
So I am using core data and I have to make my class Decodable to use the decoder for my get request. The errors I get are 'self' used in property access before 'super.init' call in my CoreDataClass each of my decode values has the error. CoreDataProperties extension CurrentPlayers {   @nonobjc public class func fetchRequest() - NSFetchRequestCurrentPlayers {     return NSFetchRequestCurrentPlayers(entityName: "CurrentPlayers")   }   @NSManaged public var photoUrl: String?   @NSManaged public var firstName: String?   @NSManaged public var lastName: String?   @NSManaged public var position: String?   @NSManaged public var team: String?   @NSManaged public var yahooName: String?   @NSManaged public var status: String?   @NSManaged public var jerseyNumber: Int64 } extension CurrentPlayers : Identifiable { } CoreDataClass @objc(CurrentPlayers) public class CurrentPlayers: NSManagedObject, Decodable {       enum CodingKeys: String, CodingKey {     case photoUrl = "PhotoUrl"     case firstName = "FirstName"     case lastName = "LastName"     case position = "Position"     case team = "Team"     case yahooName = "YahooName"     case status = "Status"     case jerseyNumber = "JerseyNumber"   }       required public init(from decoder: Decoder) throws {     let values = try decoder.container(keyedBy: CodingKeys.self)     photoUrl = try values.decode(String.self, forKey: CodingKeys.photoUrl)     firstName = try values.decode(String.self, forKey: CodingKeys.firstName)     lastName = try values.decode(String.self, forKey: CodingKeys.lastName)     position = try values.decode(String.self, forKey: CodingKeys.position)     team = try values.decode(String.self, forKey: CodingKeys.team)     yahooName = try values.decode(String.self, forKey: CodingKeys.yahooName)     status = try values.decode(String.self, forKey: CodingKeys.status)     jerseyNumber = Int64(try values.decode(Int.self, forKey: CodingKeys.jerseyNumber))   } }
12
0
3.3k
Mar ’21
Pod Error
I downloaded the pod "youtube-ios-player-helper", "~ 1.0.3" and minutes after importing it I get the error No such module 'youtube_ios_player_helper'. Did I install the pod correctly? podfile target 'LearnHockey' do  use_frameworks!  pod "youtube-ios-player-helper", "~ 1.0.3" end
1
0
704
Mar ’21
Remove Empty Names
I'm trying to find a way to remove instances of empty names in my array. I was trying to find the indices to remove them but it does not print. I could use a little help.    func filterArr() {     for (index, player) in cPlayerArr.enumerated() {       if (player.yahooName == "") {         print("Found \(player) at \(index)")       }     }   } extension CurrentPlayers {   @nonobjc public class func fetchRequest() - NSFetchRequestCurrentPlayers {     return NSFetchRequestCurrentPlayers(entityName: "CurrentPlayers")   }   @NSManaged public var photoUrl: String?   @NSManaged public var firstName: String?   @NSManaged public var lastName: String?   @NSManaged public var position: String?   @NSManaged public var team: String?   @NSManaged public var yahooName: String?   @NSManaged public var status: String?   @NSManaged public var jerseyNumber: Int64 } extension CurrentPlayers : Identifiable { }
3
0
424
Mar ’21
Modify API to remove empty names.
I'm trying to find a way to remove instances with names as empty strings from my array that receives the data. how do I modify my filter to do that.       self.cPlayerArr = fillPlayers.filter(){             $0.yahooName != "" }    func parseJSON(completed: @escaping () - ()) {     let url = URL(string: "")     let decoder = JSONDecoder()     let appDelegate = UIApplication.shared.delegate as! AppDelegate //- Intentionally using forced casting.     decoder.userInfo[.managedObjectContext] = appDelegate.persistentContainer.viewContext     URLSession.shared.dataTask(with: url!) { (data, response, error) in               if error == nil {         do {           let fillPlayers = try decoder.decode([CurrentPlayers].self, from: data!)           self.cPlayerArr = fillPlayers.filter(){             $0.yahooName != ""           }           let json = try JSONSerialization.jsonObject(with: data!, options: [])           print(json)                       DispatchQueue.main.async {             completed()           }         } catch {           print("JSON Error: ", error)         }       }             }.resume()   } extension CurrentPlayers {   @nonobjc public class func fetchRequest() - NSFetchRequestCurrentPlayers {     return NSFetchRequestCurrentPlayers(entityName: "CurrentPlayers")   }   @NSManaged public var photoUrl: String?   @NSManaged public var firstName: String?   @NSManaged public var lastName: String?   @NSManaged public var position: String?   @NSManaged public var team: String?   @NSManaged public var yahooName: String?   @NSManaged public var status: String?   @NSManaged public var jerseyNumber: Int64 } extension CurrentPlayers : Identifiable { }
11
0
1.4k
Mar ’21
Pass Data Forward Tips
I'm trying to pass data forward and I am using storyboard but I can't use a segue because it will dismiss my initial view controller. What technique should I do to pass it forward without pushing my initial viewcontroller? I tried using storyboardID to initialize the destination viewcontroller but that does not work either.
4
0
737
Mar ’21
Notification Center Help
I'm trying to pass data forward from my HdVC to my FaVC with Notification Center using a button called addToFav and it does not seem to pass my data I call var item. I need a little help figuring it out a way to modify the code so my item can be passed and set to a variable currentFav I have in my FaVC. HdVC class HockeyDetailVC: UITableViewController {       let imageController = FetchImage()       var item: CurrentPlayers? /* This object value I want in FaVC */ override func viewDidLoad() {     super.viewDidLoad()     NotificationCenter.default.addObserver(self,     selector: #selector(handleFavNotification(notification:)),     name: .passFavNotification,     object: nil)   }       @objc func handleFavNotification(notification:Notification){       if let theFav = notification.object as? CurrentPlayers {         self.item = theFav       }     }      @IBAction func addToFav(_ sender: Any) {     let alert = UIAlertController(title: "Favourite Added 💙", message: "\(name.text ?? "") is added to favourites", preferredStyle: .alert)     alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))     self.present(alert, animated: true, completion: nil)     print("Favourite button Pressed")     let passDataVC = FavouritesVC() /* I think passDataVC is supposed to be different because I use storyboard but I don't know what else it's supposed to be. */     self.present(passDataVC, animated: true, completion:nil)     } FaVC class FavouritesVC: UITableViewController {       var currentFav: CurrentPlayers? /*this is the variable I want to set my item too. */       var favArr = [CurrentPlayers]()  override func viewDidLoad() {     super.viewDidLoad()     if currentFav == nil {     self.tableView.separatorStyle = UITableViewCell.SeparatorStyle.none     } else {     NotificationCenter.default.post(name: .passFavNotification,     object: self.currentFav)     favArr.append(currentFav!)     print(currentFav!)     }   }    
11
0
841
Apr ’21
Save When Program Exits
I'm trying to use CoreData to save my favourites so that they will be accessed when the program terminates but I am not sure how to make my object persistent to do that.    @IBAction func addToFav(_ sender: Any) {         let alert = UIAlertController(title: "Favourite Added 💙", message: "\(name.text ?? "") is added to favourites", preferredStyle: .alert)         alert.addAction(UIAlertAction(           title: "OK",           style: UIAlertAction.Style.default)           { _ in         if let favPlayer = self.item /*this needs to be persistent*/ {             FavouriteManager.shared.add(favPlayer)             PersistenceService.saveContext()              }           })         self.present(alert, animated: true, completion: nil)         print("Favourite button Pressed")       } I have a PersistenceService class I can more easily access my CoreData values. class PersistenceService {       private init() {}           static var context: NSManagedObjectContext {       return persistentContainer.viewContext     } // MARK: CoreData static var persistentContainer: NSPersistentContainer = {   let container = NSPersistentContainer(name: "playerModel")   container.loadPersistentStores(completionHandler: { (storeDescription, error) in     if let error = error as NSError? {       // Replace this implementation with code to handle the error appropriately.       // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.               fatalError("Unresolved error \(error), \(error.userInfo)")     }   })   return container }() static func saveContext () {   let context = persistentContainer.viewContext   if context.hasChanges {     do {       try context.save()     } catch {       // Replace this implementation with code to handle the error appropriately.       // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.       let nserror = error as NSError       fatalError("Unresolved error \(nserror), \(nserror.userInfo)")     }   } } }
9
0
3k
Apr ’21
Add SearchBar and Scope Programmatically
I'm trying to figure out how to add a searchbar and a scope as a header to my UIViewController. The issue is I don't know the code to add it as a header.    func customizeSearch() {     let searchBar = UISearchBar(frame: CGRect(x:0, y:0, width: (UIScreen.main.bounds.width), height: 70))     searchBar.backgroundColor = UIColor.black     searchBar.delegate = self     searchBar.scopeButtonTitles = ["All", "Forwards", "Defensemen", "Goalies"]     //self.tableView.tableHeaderView = searchBar if I had a tableview, I have a vc.   }
1
0
518
Apr ’21
Delay Button To Site
I have an alert that I want to go to a specific site but after the user presses okay and for it to show only once. I can't figure out the part where the site is delayed because the user did not press okay. var justOnce: Bool = true    @IBAction func playStats(_ sender: Any) {     //show alert only once     if justOnce {     let alert = UIAlertController(title: "Stats Important", message: "You can copy and paste the name here when you see the searchbar", preferredStyle: .alert)     alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))     self.present(alert, animated: true, completion: nil)     justOnce = false gotoSite()     }   }
1
0
590
Jul ’21
Need Help Transfer Data From Button
I am not sure how to transfer data a name from a button in my UITableViewCell to a UIViewController. I have a prepare function but it doesn't work gives me an unrecognized selector error. Is there a way to use it for this instance? func prepare(for segue: UIStoryboardSegue, sender: Any?) {     if segue.identifier == "hs" {     let destinationController = segue.destination as! HighlightsVC       destinationController.playerName = (item.yahooName!)   }   }
36
0
2.3k
Aug ’21
Fetch Core Data Issue
I have an issue fetching objects from Core Data in my favourites section. I can save it with a button but I can not seem to retrieve the objects when I restart the app. I get it to print over 40000 (I have no idea why) and I see no favourites in my favourites section when I added them before.    override func viewDidLoad() {     super.viewDidLoad()     if currentFav == nil {     //display nil     fetchSave()     self.tableView.separatorStyle = UITableViewCell.SeparatorStyle.none     } else {     NotificationCenter.default.post(name: .passFavNotification,     object: self.currentFav)     DispatchQueue.main.asyncAfter(deadline: .now() + 300) {         self.reviewRating.requestReview(isWrittenReview: false)       }     }   } //trying to get this function to retrieve my objects in the persistent store    func fetchSave() {     let fetchRequest: NSFetchRequest<CurrentPlayers>     fetchRequest = CurrentPlayers.fetchRequest()     do {       let objects = try context.fetch(fetchRequest)       //I get over 40000 objects       print("These are how many saved favourites I have: \(objects.count)")       tableView.reloadData()     } catch {       print("Fetch failed")     }    }       @IBAction func save(_ sender: UIBarButtonItem) {     let saveFav = CurrentPlayers(context: context)     // Assign values to the entity's properties     for o in prefArr {     saveFav.yahooName = o.yahooName     saveFav.team = o.team     saveFav.position = o.position     saveFav.photoUrl = o.photoUrl     print("These are my saved objects: \(saveFav)")     // To save the new entity to the persistent store, call     // save on the context     }     do {       try context.save()     } catch {       print(error)     }   }
16
0
2.2k
Sep ’21