检查NSURL数组是否存在索引

时间:2016-04-21 10:46:23

标签: ios arrays swift nsurl

我有一个包含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
} 

4 个答案:

答案 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")
}

输出:

  

结果

     

http://google.com

     

这是一个网址

答案 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)
    }
}