我有这段代码不能编译。这个想法是我想要保持一个全局不变的类。
ViewController.swift:
var user = [String: String]()
user[CUser.Attribute.TYPE] = userTypeSwitch.on ? CUser.Type.RIDER.rawValue : CUser.Type.RIDER.rawValue
CUser.swift
class CUser {
enum Type: String {
case RIDER
case DRIVER
}
class Attribute {
sta
这段代码无法用SWIFT5.1编译
import Foundation
protocol SomeClassProtocol: AnyObject {}
class SomeClass: SomeClassProtocol {}
class GenericClass<T:AnyObject> {
weak var t: T?
init(t: T) {
self.t = t
}
}
let test = GenericClass<SomeClassProtocol>(t: SomeClass())
错误是
'Gener
我理解"@objc“属性对协议的作用。我不明白为什么要将它添加到类中,如下面的示例:
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
@objc class Counter {
var count = 0
var dataSource: CounterDataSource?
func increment() {
if
我有一个表格的通用类:
class BaseClass<T> {
var prop: T
...
}
然后,我有表单的多个子类:
class SubClassOne: BaseClass<SomeSubClass> {
...
}
class SubClassTwo: BaseClass<SomeOtherSubClass> {
...
}
其中类型参数SomeSubClass和SomeOtherSubClass都继承于公共基类SomeBaseClass。
我现在想要定义一个变量来存储SubClassOne和SubClass
我已经实现了一个快速链表--我还构建了一个堆栈和队列,它们都使用引擎盖下的链接列表。我扩展了我的链接列表以符合自定义的可转换协议,这样我就可以调用它上的print( list )。扩展名包含在我的linkedlist.swift文件中,如下所示:
extension LinkedList: CustomStringConvertible {
var description: String {
var currentIndex: Int = 0
var description: String = ""
if var curr
为什么下面的代码会产生错误?
protocol ProtocolA {
var someProperty: ProtocolB { get }
}
protocol ProtocolB {}
class ConformsToB: ProtocolB {}
class SomeClass: ProtocolA { // Type 'SomeClass' does not conform to protocol 'ProtocolA'
var someProperty: ConformsToB
init(someProperty: Co
是否可以在Swift (2.1)的当前迭代中对变量类型添加约束?
如果我有一个类Element
class Element: NSObject {
var type: ElementType
init(type: ElementType) {
self.type = type
}
}
有一个枚举ElementType
enum ElementType {
case Cell
case Header
case Footer
case Decoration(kind: String)
}
在其他类中,如果我有一个类型为Elem
在Objective类别中,可以通过在类中包含类别的标题来引入类别方法引入的扩展功能。
似乎所有Swift扩展都是在没有导入的情况下自动引入的。你如何在Swift中实现同样的目标?
例如:
extension UIView {
// only want certain UIView to have this, not all
// similar to Objective-C, where imported category header
// will grant the capability to the class
func extraCapability() {
我正在尝试编写一个统一的iOS插件,它需要使用C层的桥接器。
插件本身是用Swift编写的。
目前,我的实现工作如下:
// Swift
@objc public class SomeClass {
@objc public func SomeFunction() -> String {
return "Hello"
}
}
// C
extern "C" {
void _someFunction() {
// I can access the Swift file using "[S
我对Swift中关于使用var和关键字{ get }的协议有疑问。
来自
如果协议要求属性是可获取和可设置的,则该属性要求不能通过常量存储属性或只读计算属性来满足。如果协议只要求属性是可获取的,则任何类型的属性都可以满足该要求,如果这对您自己的代码有用,则该属性也是有效的。
属性要求总是声明为变量属性,以var关键字作为前缀。可获取属性和可设置属性通过在其类型声明后写入{ get set }表示,而Gettable属性则通过写入{ get }指示。
我不明白为什么我不能使用让。协议中的var只包含get,而不仅仅是let
就像这样:
protocol someProtocol
{
我试图使用目标-c .m文件中的快速类方法,但无法导入我的文件。
在构建设置->打包中:定义模块是我的产品模块名是库在构建选项中我设置了嵌入式内容包含Swift代码为是<代码>E29</code>
但是,当我试图将目标模块导入我的*.m文件时,我得到的文件没有找到错误。
#import "Library-Swift.h"
无法导入。
我有迅速的档案。有什么想法吗?
我也在尝试使用`图书馆-桥接-头.h‘
//
// Use this file to import your target's public headers that you
我从Mirror.children获取属性列表,它返回(label: String?,value: Any)。如何获取每个值的真实类型。
var a: Int = 1
var b: Int? = nil
var c: Any?
c = a
getType(c) -> "Int"
c = b
getType(c) -> "Optional<Int>"
我遵循了Apple开发人员关于实现离线数据的教程。但我想使用CoreData。我正在努力打开CoreData上下文并将其放入数组中,如果这是正确的话。
我使用的是Swift 3和最新的xCode。
这是我的实体,我不需要为单元格拉出所有的值,只需要显示有趣的东西:
这就是我的book.swift,所有东西都是基于它的。
import Foundation
import CoreData
import UIKit
import os.log
public class book: NSObject, NSCoding {
var title: String
var author: St
-(IBAction)ok
{
//send message to the delegate with the new settings
[self.delegate setHeight:_height Width:_width Mines:_mines];
[self.delegate dismissViewControllerAnimated:YES completion:nil];
}
在我导入ViewController.h之前,发送给代理的第一条消息不起作用,但第二条消息在没有导入的情况下有效。如果我按照optionsViewController协议的要求添加
我现在正在使用Swift编写一个自定义UITextField,并遇到以下情况:
class MyField: UITextField {
open override var text: String? {
didSet {
// some logic that normalizes the text
}
}
private func setup() { //called on init
addTarget(self, action: #selector(textEditingChange
我正在尝试将我的应用程序迁移到Swift 3,但我遇到了麻烦。
让我苦苦挣扎的代码部分是:
extension JSON: Swift.BooleanType {
//Optional bool
public var bool: Bool? {
get {
switch self.type {
case .bool:
return self.object.boolValue
default:
return nil
}
}
set {
if n
这是我在util文件中的职责。它抱怨“'UIViewController‘类型的值没有成员'mapView'”
func removeSpecificCustomAnnotation(annotationArray: [CustomPointAnnotation], annotationIdToRemove: String, viewController: UIViewController) {
for annotation in annotationArray {
if let ID = annotation.locationID, ID ==
我正在处理一个Swift (v1.2)项目,其中包含两个UIViews。MyView和MyViewSubclass。
MyView有一个委托,我希望在MyViewSubclass中重写它作为一个子协议,类似于UITableViews有一个也符合超级UIScrollViewDelegate的UITableViewDelegate。
我的第一个想法是重写超类属性,但是这个会导致编译器错误,因为子类不能覆盖具有不同类型的超类属性。
// Example throws a compiler error. Can't override property with different type
我试图在Swift 5中创建一些类来表示有向图。我发现Swift仿制药非常令人困惑和限制。
到目前为止,这就是我所得到的,但不管我尝试了什么,Swift似乎想出了一些模糊的错误或其他错误(两个在下面的评论中显示)。
我甚至可以在Swift中实现这种结构,而不需要将节点硬编码到特定的具体类型?
我希望允许更改Node类型,以便可以根据问题的需要向Node和Edge类型添加其他属性。
public class Graph<N:Node>
{
var nodeMap: [String: N] = [:]
var edges: [Edge<N>] = []
Swift中的Hashable协议要求您实现一个名为hashValue的属性
protocol Hashable : Equatable {
/// Returns the hash value. The hash value is not guaranteed to be stable
/// across different invocations of the same program. Do not persist the hash
/// value across program runs.
///
/// The value of `ha