草庐IT

swift - nil 在可选类型中,它背后到底是什么?它在内存中是什么样子的?

classPerson{letname:Stringinit(name:String){self.name=name}}varjohn:Person?上面的代码片段定义了一个名为john的可选类型的变量。此时,变量的初始值为nil。类实例将其值保存在堆空间中,并将引用存储在堆栈中。(如果我错了请纠正我)john在这种情况下是一个未分配的可选变量,它还没有引用任何实例。问题:PC将名称字符串“john”存储在哪里?它是否已被创建并存储在堆栈中并等待引用堆中的某个实例?“nil”值存储在哪里?非常感谢 最佳答案 有了这个varjohn:

ios - XCTestCase : UIApplication. shared.keyWindow 返回 nil

当我打电话UIApplication.shared.keyWindow尝试在我的测试类中设置RootViewController,关键窗口返回nil。为什么会这样?这是我设置Storyboard的方式:lettestBoard=UIStoryboard(name:"TestStoryboard",bundle:Bundle(for:type(of:self)))letvc=testBoard.instantiateViewController(withIdentifier:"TestController")UIApplication.shared.keyWindow?.rootView

ios - ContainerView嵌入ViewController : Outlets are nil

当我尝试使用一个函数从其父ViewController更新容器View内容时。更新初始ViewDidLoad集后。应用程序崩溃。好像所有的Outlets都变成了nil 最佳答案 您需要在容器View中获取对ViewController的引用,然后您应该可以访问它的所有导出。为容器ViewController的segue分配一个segue标识符,并在调用segue时获取引用。例如,从父ViewController中的按钮更新容器ViewController中的标签。父ViewController:importUIKitclassVie

ios - tableView.cellForRowAtIndexPath 返回 nil,单元格太多(swift)

所以我有最奇怪的事情;我正在循环一个tableView以遍历所有单元格。它适用于少于5个单元格,但对于更多单元格会因“意外发现nil”而崩溃。这是代码:forsectionin0..最后一行是给出错误的那一行。有什么想法吗? 最佳答案 因为单元格被重复使用,只有当给定indexPath的单元格当前可见时,cellForRowAtIndexPath才会为您提供单元格。它由可选值指示。如果你想防止崩溃,你应该使用ifletifletcell=tableView?.cellForRowAtIndexPath(indexPath)as?Me

Swift - Pod 图片未加载(未找到,返回 nil)

我已经按照CocoaPods网站上的说明创建了一个新的pod组件。现在我的Pod中有以下结构:Pods(folder)MyComponent(folder)MyComponent.swiftResources(folder)name_of_image.png但是,当我尝试调用时:UIImage(named:“name_of_image”)从MyComponent.swift中,我得到了“零”返回。我已经阅读了包括为我的组件创建bundle的解决方案,但我还没有找到自己生成它的正确方法。任何建议都会很好。谢谢 最佳答案 您不能(不应该

ios - 核心数据在 swift 中管理对象 - 允许 nil 吗?

我已经在swift中为我的模型对象创建了NSManagedObject子类。通常我的模式是创建一个对象的实例,然后在其上设置属性,然后保存。新对象的属性设置为nil。不过,它们不是可选项。我很快想到这是不允许的?很多时候我需要检查值,但是如果我尝试这样的事情:如果(managedObject.property==nil)我崩溃了。 最佳答案 在创建NSManagedObject子类时,Xcode似乎不会自动将托管变量设为可选。如果值在模型中设置为可选,那么它们在子类中也应该是可选的。(我手动将它们设置为可选)classClassWi

swift - 将非可选的 Any 与 nil 进行比较总是错误的?

我正在遍历[String:Any]的字典,寻找nil,所以我可以用NSNull替换它们用于JSON写入。我的预编译器警告告诉我,将Any与nil进行比较将始终为false,但我知道它至少包含两个从未找到的nil。有没有办法检查Any是否为nil? 最佳答案 Optional可以是nil。其他任何东西都不能是nil。Any不是可选的。因此,没有必要将Any与nil进行比较。测试永远不会成功。如果您知道这些东西可能是可选的,您应该输入Any?。这是一个可选的,可以与nil进行比较。这是一个简单的例子:lets:String?=nille

ios - 在 Swift 中,如何将数组中的每个元素设置为 nil?

varroomsLiveStates=[Firebase?]()forrefinroomsLiveStates{ifref!=nil{ref=nil}}}这似乎行不通。 最佳答案 您可以将每个都设置为nil:forindexin0..正如TheSwiftProgrammingLanguage在其ControlFlow中所说的那样for语法的讨论:Thisexampleprintsthefirstfewentriesinthefive-times-table:forindexin1...5{println("\(index)times

swift - 不能将 Nil 分配给类型 AVCaptureDeviceInput

我试过注释掉deviceInput=nil行只是为了测试,但出现了其他错误。此代码存在于其他在线示例中,因此我不确定这里发生了什么。privatefunccaptureSetup(position:AVCaptureDevicePosition){varcaptureError:NSError?varcaptureDevice:AVCaptureDevice!fortestedDeviceinAVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo){if(testedDevice.position==position){capture

ios - CLFloor 在 iOS 8 中返回 nil

所以我试图让CoreLocation中的CLFloor给我数据,而不是在Swift中返回nil,但我没能做到。我尝试了自己的代码和NSHipster的以下代码:importCoreLocationclassLocationManagerDelegate:NSObject,CLLocationManagerDelegate{funclocationManager(manager:CLLocationManager!,didUpdateLocationslocations:AnyObject[]!){letlocation:CLLocation?=locations[0]as?CLLoca