Tag: 可选

iOS – 在子类中的选项的Swift和分析错误

我已经实现了一个叫做Filler.swift的Parse子类,它包含了保留在Parse后端的五个variables。 同时试图将数据保存到Parse后端使用这个子类,我得到的错误: fatal error: unexpectedly found nil while unwrapping an Optional value 。 这是导致错误的代码(在self.object.username = username行): if let username = PFUser.currentUser()?.username { // set username equal to current user self.object.username = username }else{ println("PFUser.currentUser()?.username contained a nil value.") } 我已经知道这是如何处理我的子类中的可选variables,但parsing文档并不清楚如何做到这一点。 这是我的子类的代码: class Fillup : PFObject, PFSubclassing { var amount : String? { get { return […]

意外地发现了零,同时展开阅读JSON的可选值

人们,我不明白为什么,但是这个问题(意外发现零,而解包一个可选值)发生在这一行: 变种字典:NSDictionary = NSJSONSerialization.JSONObjectWithData(数据,选项:NSJSONReadingOptions.MutableContainers,错误:错误)作为NSDictionary 看代码: import基金会 class ProdutoService { // return a produtos Array class func getProdutos() -> Array<Produto> { var produtos: Array<Produto> = [] for (var i = 0; i < 10; i++) { var p = Produto() p.nome = "Produto \(i)" p.desc1 = "Descrição \(i)" p.desc2 = "Descrição \(i)" produtos.append(p) } return produtos […]

UITableView didSelectRowAtIndexPath从不调用

我有UITableView里面的UIViewController采用UITableViewDelegate & UITableViewDataSource协议。 numberOfRowsInSection和cellForRowAtIndexPath被实现。 故事板中有数据源和代表的出口。 TableViewselect单一select。 检查触摸时显示select。 我在模拟器上运行项目,触摸表单元格,得到了didHighlightRowAtIndexPath调用,但didSelectRowAtIndexPath或willSelectRowAtIndexPath永远不会被调用。 我忘了什么 什么可以影响TableView这种方式? PS我知道,有这样的问题很多,但我已经花了几个小时的谷歌search和阅读stackoverflow,仍然没有解决我的问题。 TestViewController.h: @interface TestViewController : ViewController <UITableViewDelegate, UITableViewDataSource> @end TestViewController.m: @interface TestViewController () @property (strong) IBOutlet UITableView *tableView; @end @implementation TestViewController – (void)viewDidLoad { [super viewDidLoad]; } – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"selected"); } – (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"highlighted"); } – (NSInteger)numberOfSectionsInTableView:(UITableView […]

在Swift中隐式展开的Optionals似乎不起作用

我遵循Swift编程语言手册来调查强大的参考周期。 其中一个应该工作的例子不能在Xcode中编译。 我不明白为什么代码被破坏。 在本章中 ,有一个例子是这样的: 当我尝试在Xcode中编译这段代码时,会抛出这个错误: 在所有存储的属性被初始化之前使用“self” 。 但是,我认为它应该能够编译,因为我设置capitalCity为默认为零的隐式解包选项,所以在设置self.name = name之后,所有存储的属性都应该已经设置好了。 我在这里错过什么? 编译代码需要做什么修改? 提前致谢!

Swift下标错误

我相信它与可选项有关,但是我正在安全地解开sourceURL,所以我仍然不确定错误在哪里! 我试图访问一个JSON对象的数组的字典值。 但是,我仍然得到“无法find接受提供的参数'下标'重载。 这似乎很简单,但我似乎无法弄清楚! var dictTemp: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: &localError) as? NSDictionary var finalURL: String // error line below if let sourceURL = dictTemp[0]["source"]["sourceUrl"] as? NSString { finalURL = sourceURL as String }

Swift 2无法删除可选的绑定

我是Swift中的新成员,对可选(!,?)没有更多的想法。 我试图从plist中获取数据,创build模型并显示给UITableView 。 表格数据完美地显示出来,但是它显示了Optional()绑定。 我试过改变! 至 ? 但无法解开。 你能请,引导我解决这个问题。 这是我的代码和输出 – var fileName : String? var dataArray : Array<SHQuesAns>? 从pList fetch数据 – func loadTableView(){ dataArray = SHDataAccess.init(fname: fileName).arrayFromPlist() self.questionTableView.dataSource = self self.questionTableView.delegate=self self.questionTableView.reloadData() } SHDataAccess类 – import UIKit var fileName : String! class SHDataAccess: NSObject { init(fname:String?) { super.init() fileName = fname } func arrayFromPlist() […]

崩溃nil可选

我做了一个新的操作符,只有当值不为零时才将值赋给一个目标,否则什么都不做。 基本上它是一个合成糖, if let foo = foo { faa = foo } : infix operator =? {} func =?<T>(inout lhs: T, rhs: T?) { if let rhs = rhs { lhs = rhs } } func =?<T>(inout lhs: T?, rhs: T?) { if let rhs = rhs { lhs = rhs } } 这样我可以保存一些input: // […]

if-let语句不打开可选

我在我的代码中碰到了一些似乎好奇的东西,并且想知道这个行为是否有一个简单的解释。 鉴于以下声明: if let tabBarController = topViewController as? UITabBarController { for subcontroller in tabBarController.viewControllers! { println(subcontroller.view) if let subcontrollerView = subcontroller.view { println(subcontrollerView) println(subcontrollerView!) if subcontrollerView!.window != nil && subcontroller.isViewLoaded() { topViewController = subcontroller as? UIViewController break; } } } } 现在据我所知,if-let语句应该为我打开条件 – 但这不是这里展示的行为。 我不能访问subcontrollerView的window属性,除非我再次解包可选。 x代码控制台返回以下内容: Optional(<UILayoutContainerView: 0x7fbccd44e7f0; frame = (0 0; 320 568); autoresize […]

数组索引超出范围 – 可select解除绑定时出错

我有一个叫做Settings的实体,它有一个叫做Inttypes的backgroundColor属性,如果它是1,那么视图控制器将有一个白色的背景,如果是0,那么背景是深灰色。 但是当我试图打开视图控制器时出现以下错误; 致命错误:数组索引超出范围 对于我的函数中的以下行 if settingsArray.count == 1 { setting = settingsArray[1] } else if settingsArray.count <= 0 { println("No settings in array") } 视图控制器 var settingsArray: [Settings]! var setting: Settings! var backgroundSetting: Bool = true override func viewWillAppear(animated: Bool) { backgroundSettings() } override func viewDidLoad() { super.viewDidLoad() backgroundSettings() } // Function to fetch settings […]

Swift中可选的包装,为什么Swift将“可选”添加到string

我将一个数组保存到模型中,当保存数据不包含可选(…),但是当数据正在读取时,我得到可选(…)环绕它。 感谢您的帮助和耐心,因为我是Swift新手。 在将值添加到模型时,这是println : saveOperativesInModel: Test Name 从模型中读取值时,这是println : getOperativesFromModel: Optional(Test Name) 为什么Swift将“Optional(xxx)”添加到string? 这是简化的代码: func saveOperativesInModel() { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext! let entity = NSEntityDescription.entityForName("Operatives", inManagedObjectContext: managedContext) var item: NSManagedObject! if let operativesList = self.operativesResult?.operativesList { self.operativesTable.removeAll() for itemInArray in operativesList { item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext) item.setValue(itemInArray.firstName, forKey: […]