固定大小的数组在swift中

时间:2015-07-24 07:20:42

标签: ios arrays swift

我有一个固定大小的数组

var fieldNameArray = [String?](count: 4, repeatedValue: nil)

我这样做是为了搜索数组中是否有元素

  if let temp = find(fieldNameArray,"profile_picture"){//i get a compile error here
            //remove the data
           ....




        }else{

            println(" //append the value")
           .....

        }

但是我得到编译时错误

  

无法使用类型'([(String?)]的参数列表调用'find',   字符串)'

我想我应该打开它?我该怎么办

已更新

 SRWebClient.POST(registerURl)

            .data(registerImagesArray, fieldName: fieldNameArray, data: parametersToPost)

            .send({(response:AnyObject!, status:Int) -> Void in//here compile time error


                println("response object: \(response)")

再次将我的数组更改为固定大小数组后,我收到此错误

  

无法使用类型'((AnyObject!,Int)的参数列表调用'send'    - >无效,失败:(NSError!) - >空隙)

2 个答案:

答案 0 :(得分:0)

尝试使用它(Swift 2.0):

if let index = fieldNameArray.indexOf("profile_picture") {
        //remove the data using the index
       ....

} else {
       print("// append the value")
       .....
}

在swift 1.2中(效率不高但有效):

if let temp = find(fieldNameArray.filter { $0 != nil}.map { $0! },"profile_picture") { 
    // Then same code as question... 

答案 1 :(得分:0)

为了提高效率,你不应该做Manav Gabhawala建议的事情,而是自己写一个发现功能:

func myFind(array: [String?], value: String) -> Int? {
    for (i, av) in enumerate(array) {
        if av != nil && av! == value {
            return i
        }
    }
    return nil;
}

当Swift编译为机器代码时,您将获得与标准库的查找几乎相同的性能。