我正在检查是否已选择某个元素。
func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
// First, see if the game is in a paused state
if !gamePaused
{
// Declare the touched symbol and its location on the screen
let touch = touches.anyObject! as? UITouch
let location = touch.locationInNode(symbolsLayer)
之前已经在Xcode 6.2中编译得很好但是有了6.3的更新,这行&#34;让touch = touches.anyObject!如? UITouch&#34;抛出错误:
&#39;设置&#39;没有名为&#39; anyObject&#39;
的成员我已经阅读了许多类似的问题,但我似乎无法解决问题&#34;要使用该值,您需要先“解开”它。&#34;特别是因为答案似乎集中在通知上。
非常感谢你。 w ^
答案 0 :(得分:22)
let touch = touches.first as? UITouch
.first
可以让您访问UITouch的第一个对象。
由于Xcode 6.3使用Swift(1.2)的更新版本,您需要将旧代码转换为Swift 1.2(编辑 - &gt;转换 - &gt;转换为最新的Swift)。
Swift 1.2,使用Set
(Swift中的新内容)而不是使用NSSet
(Objective-C中的旧版本)。因此,touchbegan函数也将其参数从NSSet更改为Set。
有关详细信息,请refer this
答案 1 :(得分:3)
这将检查symbolsLayer
中的多个触摸override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
{
// First, see if the game is in a paused state
if !gamePaused
{
// Declare the touched symbol and its location on the screen
for touch: AnyObject in touches {
let location = (touch as! UITouch).locationInNode(symbolsLayer)
}
}
}