Error[8]: Undefined offset: 27, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

我该怎么做indexOfObject或适当的containsObject

您可以使用内置的

find
,从而避免桥接到Objective-C
-但前提是您的元素类型为Equatable。(如果它不是平等的,则可以通过比较功能和扩展名来实现。)

例:

func == (lhs:Piece,rhs:Piece) -> Bool {    return lhs.val == rhs.val}class Piece:Equatable,Printable {    var val : Int    var description : String { return String(val) }    init (_ v:Int) {        val = v    }}

现在,您可以调用

find(arr,p)
where
arr
Array<Piece>
and
p
Piece

一旦有了这些,就可以基于它开发实用程序。例如,这是一个全局函数,用于从数组中删除对象而不桥接到Objective-C:

func removeObject<T:Equatable>(inout arr:Array<T>, object:T) -> T? {    if let found = find(arr,object) {        return arr.removeAtIndex(found)    }    return nil}

并像这样测试它:

var arr = [Piece(1), Piece(2), Piece(3)]removeObject(&arr,Piece(2))println(arr)

您也可以为NSObject子类执行此 *** 作。例:

func == (v1:UIView, v2:UIView) -> Bool {    return v1.isEqual(v2)}extension UIView : Equatable {}

现在您可以调用

find
一个UIView数组。但是,对于每个想要
find
在该类的Array上使用的单个类都必须这样做,这有点麻烦。我已经向Apple提出了增强请求,要求将所有NSObject子类都视为Equatable,并且
==
应该
isEqual:

自动 恢复。

编辑 从Seed 3开始,这对于UIView和其他NSObject类 自动的。因此,

find
现在为他们工作。

编辑2 从Swift 2.0开始,

indexOf
将作为一种方法存在:

let s = ["Manny", "Moe", "Jack"]let ix = s.indexOf("Moe") // 1

另外,它需要一个返回Bool的函数:

let ix2 = s.indexOf {编辑3.hasPrefix("J")} // 2

同样,这仅适用于Equatable系列,因为很明显您无法在大海捞针中找到针头,除非您有找到针头的方法。

removeObject
Swift 2.0还引入了协议扩展。这意味着我可以将全局函数重写
extension RangeReplaceableCollectionType where Generator.Element : Equatable {    mutating func removeObject(object:Self.Generator.Element) {        if let found = self.indexOf(object) { self.removeAtIndex(found)        }    }}
为方法!

例如:

var arr = [Piece(1), Piece(2), Piece(3)]arr.removeObject(Piece(2))

由于Array采用RangeReplaceableCollectionType,因此现在我可以编写如下代码:

[+++]

哦,快乐的一天!



)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
我该怎么做indexOfObject或适当的containsObject_随笔_内存溢出

我该怎么做indexOfObject或适当的containsObject

我该怎么做indexOfObject或适当的containsObject,第1张

我该怎么做indexOfObject或适当的containsObject

您可以使用内置的

find
,从而避免桥接到Objective-C
-但前提是您的元素类型为Equatable。(如果它不是平等的,则可以通过比较功能和扩展名来实现。)

例:

func == (lhs:Piece,rhs:Piece) -> Bool {    return lhs.val == rhs.val}class Piece:Equatable,Printable {    var val : Int    var description : String { return String(val) }    init (_ v:Int) {        val = v    }}

现在,您可以调用

find(arr,p)
where
arr
Array<Piece>
and
p
Piece

一旦有了这些,就可以基于它开发实用程序。例如,这是一个全局函数,用于从数组中删除对象而不桥接到Objective-C:

func removeObject<T:Equatable>(inout arr:Array<T>, object:T) -> T? {    if let found = find(arr,object) {        return arr.removeAtIndex(found)    }    return nil}

并像这样测试它:

var arr = [Piece(1), Piece(2), Piece(3)]removeObject(&arr,Piece(2))println(arr)

您也可以为NSObject子类执行此 *** 作。例:

func == (v1:UIView, v2:UIView) -> Bool {    return v1.isEqual(v2)}extension UIView : Equatable {}

现在您可以调用

find
一个UIView数组。但是,对于每个想要
find
在该类的Array上使用的单个类都必须这样做,这有点麻烦。我已经向Apple提出了增强请求,要求将所有NSObject子类都视为Equatable,并且
==
应该
isEqual:

自动 恢复。

编辑 从Seed 3开始,这对于UIView和其他NSObject类 自动的。因此,

find
现在为他们工作。

编辑2 从Swift 2.0开始,

indexOf
将作为一种方法存在:

let s = ["Manny", "Moe", "Jack"]let ix = s.indexOf("Moe") // 1

另外,它需要一个返回Bool的函数:

let ix2 = s.indexOf {编辑3.hasPrefix("J")} // 2

同样,这仅适用于Equatable系列,因为很明显您无法在大海捞针中找到针头,除非您有找到针头的方法。

removeObject
Swift 2.0还引入了协议扩展。这意味着我可以将全局函数重写
extension RangeReplaceableCollectionType where Generator.Element : Equatable {    mutating func removeObject(object:Self.Generator.Element) {        if let found = self.indexOf(object) { self.removeAtIndex(found)        }    }}
为方法!

例如:

var arr = [Piece(1), Piece(2), Piece(3)]arr.removeObject(Piece(2))

由于Array采用RangeReplaceableCollectionType,因此现在我可以编写如下代码:

哦,快乐的一天!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5622504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存