我有一个包含3个元素的NSURL数组。我正在修改和重置(使nil)元素,所以我需要检查索引元素是否存在。否则,我收到索引数组。我的问题是,由于这个数组是NSURL数组,我不能使用很多函数。
data[0][0]
,data[0][1]
,data[0][3]
因此使用self.data[0][2].absoluteString
会崩溃。
我无法使用indices.contains(index)
检查
检查具有索引路径的NSURL
的数组元素是否存在的方法是什么?
我想做..
if (data[0][0] exists) {
// do
}
答案 0 :(得分:2)
您可以通过count
var data = [[String]]()
let data1 = ["test 1","test 2"]
data.append(data1)
let indexToFind = 1
if data[0].count > indexToFind {
print("found")
print("value \(data[0][indexToFind])")
}
else {
print("not found")
}
如果indexToFind = 2,那么你将获得
未找到
如果indexToFind = 1,那么你将获得
结果
价值测试2
FOR网址
您可以通过 absoluteString.characters.count
var data = [[NSURL?]]()
let data1 = [NSURL(string: ""),NSURL(string: ""),NSURL(string:"http://google.com")]
data.append(data1)
let indexToFind = 2
if data[0].count > indexToFind {
print("found")
print("value \(data[0][indexToFind]!)")
if data[0][indexToFind]!.absoluteString.characters.count > 0 {
print("this is an url")
}
}
else {
print("not found")
}
输出:
结果
这是一个网址
答案 1 :(得分:1)
一个好的模式是:
if array.count > indexYouWantToAccess {
// for sure the array will contain the index
}
在您的情况下,您应该以这种方式检查
if data[0].count > index {
let url = data[0][index]
if url == nil {
// Do whatever
} else {
// Take the absolute string
}
}
处理您可以执行的nil
元素
for element in data[0] {
if element == nil {
// Is nil
} else {
// Not nil
}
}
答案 2 :(得分:0)
import Cocoa
var someInts:[Int] = [10, 20, 30]
for index in someInts {
println( "Value of index is \(index)")
}
import Cocoa
var someInts:[Int] = [10, 20, 30]
for var index = 0; index < someInts.length; ++index {
println( "Value of someInts[\(index)] is \(someInts[index])")
}
它包含所有信息:http://www.tutorialspoint.com/swift/swift_for_loop.htm
答案 3 :(得分:-1)
let array = [1, 2, 3]
for index in -20...20 {
if let item = array[safe: index] {
print(item)
}
}