【发布时间】:2014-11-11 14:28:53
【问题描述】:
您好,与较早的问题有关,我在重新发布时弄得一团糟。如果将某种类型的博客文章传递到我的函数中,我需要做的是返回 nil
这是我传入的类实例
class BlogPost {
var type = Int(arc4random_uniform(UInt32(types.count)))
var views : Int?
var author : String
var email : String
var order : Int = 0
init(author : String, email : String, order : Int) {
self.author = author
self.email = email
self.order = order
}
func teaser() -> (authorName : String, numberOfViews : Int) {
author = ""
views = 0
if views == 0 {
println("no one has read your blog yet")
} else {
println("\(author) has \(views)")
}
return(author, views!)
}
}
这是我遇到问题的功能
func randomViews(blog : BlogPost?) {
var vids = types[2]
if blog?.type == vids {
return nil
} else {
let viewCount : [Int] = [10, 20, 30, 40, 50]
var unsignedArrayCount = UInt32(viewCount.count)
var unsignedRandom = arc4random_uniform(unsignedArrayCount)
var random = unsignedRandom
switch (random) {
case 10:
println("Nil")
case 10, 20 :
println("0")
default:
random
}
}
}
我收到的错误是
"$T4?? does not conform to protocol '_RawOptionSetType'"
希望这比以前更清楚,并希望您能提供帮助。 非常感谢
这里没有问题是我的类型数组
let types : [String] = ["technology", "memos", "animals"]
我还没有删除 Int 并更新博客类中的类型
var type = (arc4random_uniform(UInt32(types.count)))
基本上,如果“动物”作为博客类型传入,我需要返回 nil,否则什么也不做,继续。所以只需要知道最好使用哪种返回类型?谢谢
干杯 Rob 好的,这就是我所做的,我刚刚创建了一个单独的函数来访问数组的随机元素
func randType() -> String {
var unsignedArrayCount = UInt32(types.count)
var unsignedrandom = arc4random_uniform(unsignedArrayCount)
var random = Int(unsignedrandom)
return types[random]
}
那么正如你所说,不需要返回类型,只需返回
func randomViews(blog : BlogPost?) {
var vids = types[2]
if blog?.type == vids {
//println("NIL")
return
} else {
let viewCount : [Int] = [10, 20, 30, 40, 50]
var unsignedArrayCount = UInt32(viewCount.count)
var unsignedRandom = arc4random_uniform(unsignedArrayCount)
var random = unsignedRandom
switch (random) {
case 10:
println("Nil")
case 10, 20 :
println("0")
default:
random
}
}
}
这似乎行得通,所以我现在就去。抱歉,帖子拖了后腿,但至少我坚持住了,没有退出并继续(有点)谢谢
【问题讨论】:
-
在您的
default子句中,您只有random。你的意思是println(random)?你想对这条线上的random做什么?
标签: ios objective-c swift return switch-statement