将Int16类型的整数保存到核心数据 - Swift

时间:2016-03-18 03:36:04

标签: ios swift core-data integer

我有一个可以运行的应用程序,可以将各种不同的数据点保存到Core Data。保存到String类型字段的每个项目都只保存find(我之后通过获取它并打印到屏幕来证明它)。但是,我遇到了整数字段(特别是Int16数据类型)的问题。试图保存" activityOrder"下面的代码行是否有什么问题?

    let newActivity = NSEntityDescription.insertNewObjectForEntityForName("Activities", inManagedObjectContext: context) as NSManagedObject

    newActivity.setValue(selectedOwnerName, forKey: "activityOwner")
    newActivity.setValue(selectedActivityType, forKey: "activityType")
    newActivity.setValue(newNumber, forKey: "activityOrder")

    //save the record
    do {
        try newActivity.managedObjectContext?.save()
    } catch {
        print(error)
    }

我可以确认变量" newNumber"有一个值,实际上是1。 " activityOwner"和"活动类型"字段保存正确(同样,它们都是字符串类型字段)。

以下是我用来检查其中是否有任何内容的代码:

    let orderFetchRequest: NSFetchRequest = NSFetchRequest(entityName: "Activities")
    orderFetchRequest.returnsObjectsAsFaults = false
    orderFetchRequest.fetchLimit = 1

    do {
        let orderResults = try appDelegate.managedObjectContext.executeFetchRequest(orderFetchRequest)
        orderData = orderResults as! [NSManagedObject]
    } catch let error as NSError {
        print("Could not fetch \(error), \(error.userInfo)")
    }

    let orderSortDescriptor = NSSortDescriptor(key: "activityOrder", ascending: true)
    orderFetchRequest.sortDescriptors = [orderSortDescriptor]

    print(orderData)

有效地我打印我们的" orderData"它打印整个记录(我看到所有String数据的值,但订单为零)

我对Core Data和Swift相当陌生。保存到Core Data时,Integers的行为与字符串不同吗?

1 个答案:

答案 0 :(得分:0)

核心数据只能保存对象类型。因此,如果你想要dave Int类型,那么首先将它转换为NSNumber对象,然后保存到Core Data。

let newActivity = NSEntityDescription.insertNewObjectForEntityForName("Activities", inManagedObjectContext: context) as NSManagedObject
newActivity.setValue(selectedOwnerName, forKey: "activityOwner")
newActivity.setValue(selectedActivityType, forKey: "activityType")
newActivity.setValue(NSNumber(short: newNumber), forKey: "activityOrder")