相关疑难解决方法(0)

如何在Swift中将正确位置的元素插入到排序数组中?

NSArray必须- (NSUInteger)indexOfObject:(id)obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator)cmp确定排序数组中新对象的插入位置.

在纯Swift中执行此操作的最佳和高性能方法是什么?

有点像:

var myArray = ["b", "e", "d", "a"]
myArray.sort { $0 < $1 }

// myArray is now [a, b, d, e]

myArray.append("c")
myArray.sort { $0 < $1 }

// myArray is now [a, b, c, d, e]
Run Code Online (Sandbox Code Playgroud)

我想找出正确的位置并插入元素,而不是追加新元素然后对数组进行排序:

let index = [... how to calculate this index ??? ...]
myArray.insert("c", atIndex: index)
Run Code Online (Sandbox Code Playgroud)

arrays sorting swift

19
推荐指数
5
解决办法
1万
查看次数

Set()的Swift map(_ :)扩展名?

  let numberSet = Set(1...11)
  let divideSet = numberSet.map({  $0 / 10 }) 
  //Error: Set does not have a member named map   :(
Run Code Online (Sandbox Code Playgroud)

Swift 1.2支持Set()无序集合,但map(_:)似乎不适用于集合,所以我决定在我的操场上变聪明并尝试:

 let stringSet = Set(map(numberSet, { String($0)}))
 println(stringSet)
 stringSet =  ["2", "11", "1", "8", "6", "4", "3", "9", "7", "10", "5]
Run Code Online (Sandbox Code Playgroud)

这似乎有效.所以我尝试扩展Set:

    extension Set {
        func map<U>(transform: (T) -> U) -> Set<U> {
        return Set(Swift.map(self, transform))  }
    }
   Error: "couldn't find initialiser for Set(T) that accepts argument of type U"
Run Code Online (Sandbox Code Playgroud)

我认为它有一个很好的理由,它不起作用,就像这个例子:

   let smarDividSet …
Run Code Online (Sandbox Code Playgroud)

swift swift-extensions

13
推荐指数
2
解决办法
5270
查看次数

标签 统计

swift ×2

arrays ×1

sorting ×1

swift-extensions ×1