【发布时间】:2015-04-27 11:39:22
【问题描述】:
我是独立开发人员,几个月前开始学习编程。目前我正在尝试找到一种方法来获得业务评级并在需要时将其显示给用户。我使用 Parse.com 作为我的后端,并拥有具有以下列(键)的解析表:
评级(类型:数字) - 使用浮点值
企业名称(类型:字符串)
BusinessReviewText(类型:字符串)
现在,我将这些数据检索为:
//Declaring empty dictionary
var businessReview = [[String:Float]]()
var businessReviewText = [[String:String]]()
//Parse query
var query: PFQuery = PFQuery(className: "Business")
query.whereKey("ratingBool", equalTo: true) // just checking which businesses have been reviewed by users
query.findObjectsInBackgroundWithBlock{(objects:[AnyObject]?, error: NSError?) -> Void in
if (error == nil) {
for object in objects as! [PFObject!]{
var bN:AnyObject = object["BusinessName"]!
var bR: AnyObject = object["Rating"]!
var bRT: AnyObject = object["BusinessReviewText"]!
self.businessName.addObject(bN)
self.businessRating.addObject(bR)
self.businessRatingText.addObject(bRT)
self.businessReview.append(["\(bN)":bR as! Float])
self.businessReviewText.append(["\(bN)":"\(bRT)"])
}
// Gives me Key: BusinessName and its rating value: floatValue as output
println("\(self.businessReview)") // I get the output as [[businessA: 4.0], [businessA: 4.0], [businessB: 5.0], [businessC: 5.0], [businessC: 3.5], [businessC: 3.5], [businessD: 3.5]]
// Gives me Key:BusinessName and its review Value:ReviewText as output
println("\(self.businessReviewText)") // I get the output as [[businessA: Good job], [businessA: High], [businessC: Awesome service! A++], [businessC: Good service!], [businessC: Good but can improve], [businessD: "NO REVIEW"], [businessD: Ok ]]
}
}
}
现在我有以下问题: 1. 我现在如何用它的键值过滤每个企业名称,以便我可以进行数学运算,例如, 要获得 businessC 的评级:(添加所有 businessC 评级/businessC.count),即:((5+3.5+3.5)/3) = 4
注意:在这里,我不知道用户正在查看哪些商家评分(例如:用户可以搜索中餐馆,他可以看到所有中餐馆商家评分的评分)。因此,我希望在一个结果中审查所有业务(这样做是否正确?)
- 这是获得评级的正确方法吗?如果没有,有什么替代方案?有教程吗?
对不起,如果我的描述性太强。但是在搜索堆栈溢出时,我有时会发现很难理解人们提出的问题。所以我尽量提供尽可能多的信息。
提前致谢。
【问题讨论】:
-
"用它的键值过滤每个企业名称" 您要过滤企业的实际名称吗?或按企业名称过滤?你能包括一个例子吗?谢谢!
-
如果以上内容不清楚,请见谅。但我不知道用户在屏幕上的特定键值。这就是我说我希望代码计算所有业务的评论的原因。因此,用户在屏幕上查看的业务无关紧要。他可以看到最终输出,例如:名称:businessA,评分:5(在计算平均评分后的总体)和业务评论文本(如果他单击特定业务)。类似于 eBay/Amazon 以及您看到的所有其他地方的评论。
-
你可以创建两个 NSDictionary。第一个是 NSString 类型的键和 NSArray 类型的值(例如 Key:BusinessName、Value:Array of Ratings)。第二个是 NSString 类型的键和 Integer 类型的值(例如 Key:BusinessName、Value:Average Rating)。然后,在对企业进行迭代时,将评级插入到与第一个字典中的 businessName 键对应的数组中。接下来,枚举第一个字典,并在值中迭代数组中的对象。最后,平均该特定业务的评分并插入平均值...
-
进入对应于businessName键的第二个字典。现在你有一个 businessNames 字典,它们的值是平均值。您的问题可以通过多种方式解决,但这只是值得深思的问题,我认为时间复杂度仅为 O(n + n)=O(2n)=O(n)。
-
@Jonathan,我还在学习。我使用过数组,但这是我第一次真正使用字典。枚举我将不得不首先研究它是什么。您能否提供上面提到的代码示例?一旦我能够让它工作,我会接受答案。谢谢。
标签: ios swift parse-platform