所以我试图对图像中的图像进行平均投票(每个图像的每个值分别存储。)
这里发生了什么:用户投票,向用户显示投票的平均值(来自过去的投票),然后用户点击"接下来"转到下一部电影投票。
我如何存储每个图像的值以使其有自己的平均值存储?我很快就开始......
这是我计算平均值的函数,以及保存投票数组的全局变量:
var votes:[Double] = []
func average(nums:[Double]) ->Double {
var total = 0.0
for vote in nums {
total += Double(vote)
}
let votesTotal = Double(nums.count)
var average = total/votesTotal
return average
}
我通过递增(仅10)访问图像。这通常是在UIButton中 计数器变量超出了正在执行计数器增量的IBAction的范围。
var counter = 1
(IBACTION)
counter++
if counter == 10 {
counter = 1
}
imageOfPerson.image = UIImage(named:"image\(counter).jpg")
resultLabel.text = ""
enableButtons()
}
提前多多感谢。
答案 0 :(得分:1)
考虑这段代码。为了测试这个,我将以下代码粘贴到一个名为AnimationObserver的类中,该类使用animationObserver实例化:AnimationObserver = AnimationObserver();
struct imageVotes
{
var imageNumber:Int = 0
var vote:Double = 0.0
}
var votes:[imageVotes] = []
var averages:[Double] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
var imageNumber:Int = 0
var thisVote:Double = 0.0
{
didSet
{
var imageVote:imageVotes = imageVotes()
imageVote.imageNumber = imageNumber
imageVote.vote = thisVote
votes.append(imageVote)
averages[imageNumber] = average(votes)
}
}
func average(nums:[imageVotes]) ->Double
{
var total:Double = 0.0
var numVotes:Double = 0.0
for var i = 0; i < nums.count; i++
{
if nums[i].imageNumber == imageNumber
{
total += nums[i].vote
numVotes += 1.0
}
}
var average = total/numVotes
return average
}
如果那么从代码中的其他地方(其中animationObserver可见,可能是你的IBAction)我写道:
animationObserver.imageNumber = 0
animationObserver.thisVote = 5.0
println("Average Vote for imageNumber \(animationObserver.imageNumber) is \(animationObserver.averages[animationObserver.imageNumber)")
animationObserver.thisVote = 8.0
println("Average Vote for imageNumber \(animationObserver.imageNumber) is \(animationObserver.averages[animationObserver.imageNumber)")
animationObserver.imageNumber = 1
animationObserver.thisVote = 7.0
println("Average Vote for imageNumber \(animationObserver.imageNumber) is \(animationObserver.averages[animationObserver.imageNumber)")
animationObserver.thisVote = 10.0
println("Average Vote for imageNumber \(animationObserver.imageNumber) is \(animationObserver.averages[animationObserver.imageNumber)")
打印:
imageNumber 0的平均投票数为5.0
imageNumber 0的平均投票数为6.5
imageNumber 1的平均投票数为7.0
imageNumber 1的平均投票数为8.5
答案 1 :(得分:0)
您可以使用带有图像文件名的字典作为键。例如:
var dictAverages = [String:Double]()
dictAverages["image\(counter).jpg"] = average(nums) //nums is the data array corresponding to the counter
我会更具体地帮助,但我很难理解你的代码。