Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 根据用户选择的指标更改应用程序中使用的权重系统?_Ios_Swift_Core Data - Fatal编程技术网

Ios 根据用户选择的指标更改应用程序中使用的权重系统?

Ios 根据用户选择的指标更改应用程序中使用的权重系统?,ios,swift,core-data,Ios,Swift,Core Data,我想在我的应用程序中为用户提供英制或公制重量计量的选择,以提高受众的适应性。我设计了以下内容,以便确定用户希望使用的设置 然而,我不确定如何将度量选择应用到整个应用程序的其余部分?是否会将应用程序延伸到用户在coredata中创建的每个对象以及与重量测量相关的所有文本标签中,并在用户每次更改重量系统时通过乘法或除法改变其重量属性 感谢您对我如何实现这一目标的任何见解,因为我不想在错误的方向上走得太远 func convertAppMetric() { if self.userSelect

我想在我的应用程序中为用户提供英制或公制重量计量的选择,以提高受众的适应性。我设计了以下内容,以便确定用户希望使用的设置

然而,我不确定如何将度量选择应用到整个应用程序的其余部分?是否会将应用程序延伸到用户在coredata中创建的每个对象以及与重量测量相关的所有文本标签中,并在用户每次更改重量系统时通过乘法或除法改变其重量属性

感谢您对我如何实现这一目标的任何见解,因为我不想在错误的方向上走得太远

func convertAppMetric() {
    if self.userSelectedWeightSystem == "Metric" {
        print("THE USER SET THE APP TO METRIC, CONVERTING FIGURES...")
        //some code
    } else if self.userSelectedWeightSystem == "Imperial" {
        print("THE USER SET THE APP TO IMPERIAL, CONVERTING FIGURES...")
        //some other code
    }
}

这将是一个非常讨厌的答案,但你想继续读下去

NSMeasurement同时保存一个值和一个单位,后者是原始测量类型。您以最初提供的格式存储所有数据-如果用户输入磅,则存储182磅的NSMeasurement。如果他们加了公斤,就用90公斤做一个。你甚至可以用自己的单位,比如石头

从那时起,始终使用NSMeasurementFormatter呈现数据。您可以传入输出类型,在您的例子中,它是您在问题中提到的全局设置。这意味着,无论他们提供什么单位,它总是正确地转换成你想要的单位,并且改变它会立即改变任何地方


它很容易使你自己的转换器奇怪的单位。我为十进制英寸和英尺/英寸做了一个,所以13.5英寸变成1'1.5英寸“

我只需要在核心数据模型中存储一个值,并用一个简单的计算属性处理公制/英制转换。您能对此进行扩展吗?我是swift和ios的新手!目前,用户存储他们输入的任何重量,例如一个通用的“60”,因此假设这是一个度量,如果应用程序运行Imperial,我需要在其上运行x2.2。好消息是,如果您的目标是iOS8+,那么已经有系统提供的格式化程序,用于所有类型的内容,例如字节数、能量、长度,Mass等,它将根据给定的区域自动处理转换和适当的单位显示。这听起来是最好的解决方案,我必须研究将该方法集成到我现有的核心数据代码中!另请参见,您是否知道当设置为USA时,它显示指标良好的任何可能原因,但当我将其设置为UK以获得KG时,它不会将数据加载到文本字段中,尽管它在控制台中打印并运行与USA配置相同的代码。因此,请确定,当您将其设置为US时,您是否获得磅数?也许可以在问题中粘贴两种情况的一点输出。这可能只是一个屏幕更新问题,但我对此表示怀疑。