Post

Replies

Boosts

Views

Activity

String has No Range of String.
Hi, I trying to get my app to run a certain storyboard based on device. This is my code under DeviceModel.swift file. import Foundation import UIKit public extension UIDevice { static let modelName: String = {   var systemInfo = utsname()   uname(&systemInfo)   let machineMirror = Mirror(reflecting: systemInfo.machine)   let identifier = machineMirror.children.reduce("") { identifier, element in     guard let value = element.value as? Int8, value != 0 else { return identifier }     return identifier + String(UnicodeScalar(UInt8(value)))   }   func mapToDevice(identifier: String) -> String { // swiftlint:disable:this cyclomaticcomplexity     #if os(iOS)     switch identifier {     case "iPod5,1":                 return "iPod touch (5th generation)"     case "iPod7,1":                 return "iPod touch (6th generation)"     case "iPod9,1":                 return "iPod touch (7th generation)"     case "iPhone3,1", "iPhone3,2", "iPhone3,3":   return "iPhone 4"     case "iPhone4,1":                return "iPhone 4s"     case "iPhone5,1", "iPhone5,2":         return "iPhone 5"     case "iPhone5,3", "iPhone5,4":         return "iPhone 5c"     case "iPhone6,1", "iPhone6,2":         return "iPhone 5s"     case "iPhone7,2":                return "iPhone 6"     case "iPhone7,1":                return "iPhone 6 Plus"     case "iPhone8,1":                return "iPhone 6s"     case "iPhone8,2":                return "iPhone 6s Plus"     case "iPhone8,4":                return "iPhone SE"     case "iPhone9,1", "iPhone9,3":         return "iPhone 7"     case "iPhone9,2", "iPhone9,4":         return "iPhone 7 Plus"       case "iPhone10,1", "iPhone10,4":        return "iPhone 8"       case "iPhone10,2", "iPhone10,5":        return "iPhone 8 Plus"       case "iPhone10,3", "iPhone10,6":        return "iPhone X"       case "iPhone11,2":               return "iPhone XS"       case "iPhone11,4", "iPhone11,6":        return "iPhone XS Max"       case "iPhone11,8":               return "iPhone XR"       case "iPhone12,1":               return "iPhone 11"       case "iPhone12,3":               return "iPhone 11 Pro"       case "iPhone12,5":               return "iPhone 11 Pro Max"       case "iPhone12,8":               return "iPhone SE (2nd generation)"       case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"       case "iPad3,1", "iPad3,2", "iPad3,3":      return "iPad (3rd generation)"       case "iPad3,4", "iPad3,5", "iPad3,6":      return "iPad (4th generation)"       case "iPad6,11", "iPad6,12":          return "iPad (5th generation)"       case "iPad7,5", "iPad7,6":           return "iPad (6th generation)"       case "iPad7,11", "iPad7,12":          return "iPad (7th generation)"       case "iPad4,1", "iPad4,2", "iPad4,3":      return "iPad Air"       case "iPad5,3", "iPad5,4":           return "iPad Air 2"       case "iPad11,4", "iPad11,5":          return "iPad Air (3rd generation)"       case "iPad2,5", "iPad2,6", "iPad2,7":      return "iPad mini"       case "iPad4,4", "iPad4,5", "iPad4,6":      return "iPad mini 2"       case "iPad4,7", "iPad4,8", "iPad4,9":      return "iPad mini 3"       case "iPad5,1", "iPad5,2":           return "iPad mini 4"       case "iPad11,1", "iPad11,2":          return "iPad mini (5th generation)"       case "iPad6,3", "iPad6,4":           return "iPad Pro (9.7-inch)"       case "iPad7,3", "iPad7,4":           return "iPad Pro (10.5-inch)"       case "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4":return "iPad Pro (11-inch) (1st generation)"       case "iPad8,9", "iPad8,10":           return "iPad Pro (11-inch) (2nd generation)"       case "iPad6,7", "iPad6,8":           return "iPad Pro (12.9-inch) (1st generation)"       case "iPad7,1", "iPad7,2":           return "iPad Pro (12.9-inch) (2nd generation)"       case "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8":return "iPad Pro (12.9-inch) (3rd generation)"       case "iPad8,11", "iPad8,12":          return "iPad Pro (12.9-inch) (4th generation)"       case "AppleTV5,3":               return "Apple TV"       case "AppleTV6,2":               return "Apple TV 4K"       case "AudioAccessory1,1":            return "HomePod"       case "i386", "x8664":             return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATORMODELIDENTIFIER"] ?? "iOS"))"       default:                    return identifier       }       #elseif os(tvOS)       switch identifier {       case "AppleTV5,3": return "Apple TV 4"       case "AppleTV6,2": return "Apple TV 4K"       case "i386", "x8664": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATORMODELIDENTIFIER"] ?? "tvOS"))"       default: return identifier       }       #endif     }     return mapToDevice(identifier: identifier)   }() } This is my code under the appDelegate func application( application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {     var storyboard: UIStoryboard     // instantiate the UIWindow     self.window = UIWindow(frame: UIScreen.main.bounds)     // Get the model name based in the extension.     let modelName = UIDevice.modelName     // If the modelName variable contains the string "iPhone 6" inside.     if (modelName.rangeOfString("iPad Air 2") != nil) {       storyboard = UIStoryboard(name: "mainStoryInVC", bundle: nil)       self.window!.rootViewController = storyboard.instantiateInitialViewController() as!ViewController     }     else if (modelName.rangeOfString("iPad Pro (9.7-inch)") != nil) {       storyboard = UIStoryboard(name: "mainStoryInVC", bundle: nil)       self.window!.rootViewController = storyboard.instantiateInitialViewController() as! ViewController     }     self.window!.makeKeyAndVisible()     return true   } It give me a problem that modelName is a string that has no value rangeOfString. It's not giving me an option to replace it. How do I fix this?
2
0
741
Sep ’20
How to get something to run under one Storyboard?
I have four Storyboards that use the same ViewControllers or same code. However, I want one thing to run only on one of the storyboards. That was to turn a label's background gray. I thought I could do this by just having the label on that storyboard connected to the code only, but it didn't work because it gave me this error when I ran a different storyboard. Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value I am thinking about solving it with if statement, but I don't know how to target a specific storyboard in code. If there is another way to solve my problem, I am fine with that option, but I would like to know if it's possible to target a certain storyboard in code. I have to code it gray to keep all the gray colored objects the same shade. Please can someone help me?
3
0
442
Sep ’20
Tic Tac Toe AI
I create a Tic Tac Toe AI in Xcode, and works just find, but it's predictable if discover the pattern. I code it so that it would go in this order unless there is text there already or there is two in row of the enemy 5,3,2,1,4,6,7,8,9. I want it so that is can randomly select one of the the labels to set text too my labels IBOutlets are: xOrOBox1 xOrOBox2 xOrOBox3 xOrOBox4 xOrOBox5 xOrOBox6 xOrOBox7 xOrOBox8 xOrOBox9
1
0
368
Sep ’20
UISwitch Size
Is there any way to change the size of a UISwitch in IB becuase I working on a iPad 12.9" size, and the size is two small for it. I can't change it in code because I using one view controller.swift file for multiple device size/storyboards. Unless, I can target one storyboard in code. Please can some help me?
6
0
4.2k
Aug ’20
XCode Help 2
Whenever I create a segue between two view controllers, the second view controller gets gray frame around it that ruins my layout. I trying to get rid of it, but I don't know how. Please someone help me? It only happen in IB, and it's when a I make a segue through IB not code. I have a picture, but there is no image attachment or can't find it.
3
0
359
Aug ’20
XCode Help
Whenever I create a segue between two view controllers, the second view controller gets gray frame around it that ruins my layout. I trying to get rid of it, but I don't know how. Please someone help me?
3
0
347
Aug ’20