小编Hat*_*r J的帖子

Swift:在'Protocol'和实现Class的数组之间进行转换

考虑一个协议和一个实现它的类:

protocol MyProtocol {
    var x: Int { get }
}

class MyClass : MyProtocol {
    var x: Int = 5
}
Run Code Online (Sandbox Code Playgroud)

我有一个类型的数组,[MyClass]我希望将它分配给一个类型的变量[MyProtocol].但是,这在Playground(XCode 6.3,Swift 1.2)中尝试时会导致错误:

var classArr: [MyClass] = [MyClass(), MyClass()]

var protocolArrA: [MyProtocol] = classArr // Causes error: EXC_BAD_INSTRUCTION
var protocolArrB: [MyProtocol] = classArr as [MyProtocol] // Causes error: EXC_BAD_INSTRUCTION
var protocolArrC: [MyProtocol] = [MyProtocol](classArr) // Causes error: Cannot find an initializer for type [MyProtocol[ that accepts an argument list of type [MyClass]
Run Code Online (Sandbox Code Playgroud)

在Swift中进行此分配的正确方法是什么?

PS有趣的是,当使用基类而不是协议时,表达式 …

arrays generics ios swift

9
推荐指数
1
解决办法
1634
查看次数

斯威夫特 - 混合抽象和具体方法

Swift没有抽象的类和方法.相反,它提供协议.

当你的课程完全抽象或完全具体时,这很好.

但是,实现具有具体方法的抽象类的最佳'Swift'方法是什么?

伪代码示例:

class Animal {
  abstract makeSound()
  abstract eyeCount()
}

class Mammal : Animal {
  override eyeCount { return 2 } // Let's assume all mammals have hard-coded 2 eyes...

class Cat : Mammal {
  override makeSound { print "Meow!" }
}

class Dog : Mammal {
  override makeSound { print "Woof!" }
}
Run Code Online (Sandbox Code Playgroud)

在哺乳动物中,我确实想要实施具体的方法,eyeCount()因为所有哺乳动物都有2个硬编码的眼睛(据说是),我不想在狗和猫中重新实施它.然而,makeSound()只应该为狗和猫实施,因为哺乳动物有不同的声音.

你会如何在Swift中实现它?谢谢!

oop abstract-class ios swift

7
推荐指数
2
解决办法
2395
查看次数

Swift错误:"无法找到'SKScene'的接口声明,超类"

免责声明:我在SO上阅读了类似的问题,找不到我的问题的解决方案.

我想将一个SKScene的子类添加到以前没有使用过SpriteKit的项目中.

该项目是ObjC和Swift的混合体.子类是用Swift编写的.

我做了什么:

  1. 通过转到项目 - >构建阶段 - >链接二进制与库来添加SpriteKit.Framework.
  2. 我创建了一个快速类,并继承自SKScene.

这是新课程:

import SpriteKit

class SnowScene: SKScene {
}
Run Code Online (Sandbox Code Playgroud)

请注意,该类不是代码中任何其他位置的引用.

当我编译我的应用程序时,我在标题中收到错误.错误发生在我的-Swift.h文件中,该文件自动导出新类(我不知道为什么).

SWIFT_CLASS("_TtC11MyCoolApp9SnowScene")
@interface SnowScene : SKScene
@end
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么以及如何规避这个问题?

objective-c ios sprite-kit swift

3
推荐指数
1
解决办法
2063
查看次数

标签 统计

ios ×3

swift ×3

abstract-class ×1

arrays ×1

generics ×1

objective-c ×1

oop ×1

sprite-kit ×1