【问题标题】:iOS Optional wrapping in SwiftSwift 中的 iOS 可选包装
【发布时间】:2015-12-03 21:56:12
【问题描述】:

我将数组保存到模型中,保存数据时未使用 Optional (...) 包裹,但是在读取数据时,我得到 Optional(...) 包裹它。 感谢您的帮助。

 saveOperativesInModel: Test Name
 saveOperativesInModel: test team 999

 getOperativesFromModel: Optional(Test Name)
 getOperativesFromModel: Optional(test team 999)



func saveOperativesInModel() {

    if (self.operativesResult?.operativesList.count > 0) {

        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let managedContext = appDelegate.managedObjectContext!
        let entity =  NSEntityDescription.entityForName("Operatives", inManagedObjectContext: managedContext)

        // Remove all records in entity
        let fetchRequest = NSFetchRequest()
        fetchRequest.entity = entity
        fetchRequest.includesPropertyValues = false

        var error:NSError?
        if let results = managedContext.executeFetchRequest(fetchRequest, error: &error) as? [NSManagedObject] {
            for result in results {
                managedContext.deleteObject(result)
            }
        }

        var item: NSManagedObject!
        //var itemInArray: Operative!
        if let operativesList = self.operativesResult?.operativesList {
            self.operativesTable.removeAll()
            for itemInArray in operativesList {
                item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)
                item.setValue(itemInArray.id, forKey: "id")
                item.setValue(itemInArray.firstName, forKey: "firstName")
                item.setValue(itemInArray.lastName, forKey: "lastName")
                item.setValue(itemInArray.mobile, forKey: "mobile")
                var error: NSError?
                if !managedContext.save(&error) {
                    println("saveOperativesInModel - Could not save \(error), \(error?.userInfo)")
                } else {
                    self.operativesTable.append(item!)
                    println("saveOperativesInModel: \(itemInArray.firstName)")
                }
            }
        }
        //println("saveOperativesInModel : \(operativesTable.count) items")

        let fetchRequest1: NSFetchRequest! = NSFetchRequest(entityName:"Operatives")
        var error1: NSError?
        let fetchedResults = managedContext.executeFetchRequest(fetchRequest1, error: &error1) as? [NSManagedObject]
        if let operativesTable = fetchedResults {
            if operativesTable.count > 0 {
                println("getOperativesFromModel : \(operativesTable.count)")
            }
            if operativesTable.count > 0 {
                for item in operativesTable {
                    let operative: Operative! = Operative()
                    operative.id = String (stringInterpolationSegment: item.valueForKey("id"))
                    operative.firstName = String (stringInterpolationSegment: item.valueForKey("firstName"))
                    operative.lastName = String (stringInterpolationSegment: item.valueForKey("lastName"))
                    println("getOperativesFromModel: \(operative.firstName)")
                }
            }
        } else {
            println("Could not fetch \(error1), \(error1!.userInfo)")
        }
    }
}

【问题讨论】:

标签: ios swift optional word-wrap


【解决方案1】:

Operative 类中的 firstName 属性应该是可选的(可能像这样声明 var firstName: String?。因此,如果您确定 firstName 中有一个字符串,则可以将打印行替换为:

println("getOperativesFromModel: \(operative.firstName!)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 2015-12-04
    • 2015-06-27
    • 2017-03-26
    • 1970-01-01
    • 2018-07-31
    • 2018-05-05
    • 2023-01-28
    相关资源
    最近更新 更多