与CoreData / SQL一起使用哪种数据类型以最大限度地减少转换

时间:2015-08-20 18:00:29

标签: ios mysql swift core-data

以下问题: 我有一个移动用户界面,例如,用户可以输入日期,名称,年龄,身高,距离等值。 我想将这些值存储在核心数据库中。 由于我希望能够使用这些值进行计算,因此在CoreData中使用适当的值可能是有意义的 像

Date: NSDate
Name: String
Age: Int16
Height: Double
Distance: Double

现在我还想将这些数据存储在远程SQL数据库中,到目前为止,我总是使用varchar(100)字段。 现在这成了一个问题,因为我开始做很多非常丑陋的转换,比如

let entry =  CoreDataObjectFromSQLNetwork()
let entry.age = NSNumber(integer: (dictionary["age"] as! String).toInt()!)
let entry.height = NSNumber(double: (dictionary["height"] as! String).toDouble()!)

那么你使用Swift / CoreData / MySQL处理的最佳方式或类型是什么?你需要像典型的类型(String,Date,Integer,Double,Boolean)

1 个答案:

答案 0 :(得分:0)

最佳方式是在两侧使用适当的数据类型,而不是仅仅将每个可能的数据类型视为100个字符的字符串。如果这不是一个选项,那么你必须在某个时候进行转换。

如果可能,第二种最佳方法是让您的服务器API与varchar进行适当的转换,以便它实际为移动客户端提供数字类型。您的服务器将拥有比人们的手机更多的CPU和电力,因此在那里进行转换。然后只需在手机上使用适当的数据类型。

如果那是不可能的,那么,你有点概述了你剩下的选择。您可以根据对数据量的预测以及对数据进行数值计算的频率来优化事物。您可以在收到数据后立即将所有数据转换为数字类型(这就是您所描述的)。或者您可以将所有内容保留为字符串,并仅在需要进行计算时转换为数字类型。哪个最好取决于您的应用程序。我更喜欢前者,但如果有很多的数据和相对较少的计算,那可能不是最好的。