如何设置此变量的值?

时间:2014-10-21 19:18:17

标签: ios swift struct

我想更改UIImage视图的值。 这是我到目前为止所做的。

import UIKit
import Foundation

struct imageViews {
    var Slope1ImageView: UIImage?

    var slopeStatus = dataValues()

    func setSlope1Image(slopeStatus1: Int) -> UIImage {
        var image: String
        switch slopeStatus1 {
        case 0:
            image = "NotWorkingStatus"
        default:
            image = "WorkingStatus"
        }
        var statusImage = UIImage(named: image)
        return statusImage


    }



}

这是我的设置。 我有一个从Parse获取对象的文件。 这将是0或1。 然后我将0或1分配给结构中的变量。

在上面的代码中,我创建了一个这个结构的实例。 然后我创建了一个函数,它将从我的struct中获取一个变量并检查它是否具有零值,然后将变量图像设置为相应的图像。如果它没有将它设置为不同的图像。

如何以这种方式将Slope1ImageViews的变量设置为函数选择的图像。

Slope1ImageView = setSlope1Image(slopeStatus.SlopeStatus1)

每次尝试我都会遇到错误 无法分配到" Slope1ImageView"在" self"

我的智慧结束了! 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为您的问题在于Slope1ImageView。如果第一个字母是大写的,Swift假设你指的是一个类。此外,您需要将local分配给变量或常量。结构也应该首字母大写。假设其他一切设置正确,您可能只需要做这样的事情。

struct ImageViews {
  // existing code...
}

var instanceOfStruct = ImageViews()

var slope1imageView: UIImage = instanceOfStruct.setSlope1Image(slopeStatus.SlopeStatus1)

答案 1 :(得分:0)

这里有很多事情,我会谈谈一些。

声明

你不应该使用结构。图像通常是相当大的对象,您不希望它们在您的应用程序中被复制。它们应该保持引用类型并且在类中。结构/类也应该大写以遵守惯例,而属性应该是小写的。你也有你的名字作为复数,暗示它是一个数组,它不应该是这样的。此外,除非它是imageView,否则不要将某些内容命名为imageView。在同一行上,如果图像是字符串,请不要将其命名。此外,除非设置了某些内容,否则不要在函数前加上set。你的函数返回一些东西,所以get前缀可能更好。我觉得你想在self内设置图像,所以让我们这样做。所以第一步是改变这个:

struct imageViews {
    var Slope1ImageView: UIImage?

    var slopeStatus = dataValues()

    func setSlope1Image(slopeStatus1: Int) -> UIImage {
        var image: String
        switch slopeStatus1 {
        case 0:
            image = "NotWorkingStatus"
        default:
            image = "WorkingStatus"
        }
        var statusImage = UIImage(named: image)
        return statusImage
    }
}

对此:

class SlopeStatus {
    var slope1Image: UIImage?

    var slopeStatus = dataValues()

    func setSlope1Image(slopeStatus1: Int) {
        var imageString: String
        switch slopeStatus1 {
        case 0:
            image = "NotWorkingStatus"
        default:
            image = "WorkingStatus"
        }
        slope1Image = UIImage(named: image)
    }
}

分配

您尝试使用以下内容将UIImage分配给Class

Slope1ImageView = setSlope1Image(slopeStatus.SlopeStatus1)

通过上述更改,它应该是

var slopeStatusImageObject = SlopeStatus()
slopeStatusImageObject.setSlope1Image(slopeStatus.SlopeStatus1)