我有一个可以运行的应用程序,可以将各种不同的数据点保存到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的行为与字符串不同吗?
答案 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")