我是iOS的新手。我有一个lib,我在我的应用程序中使用了Swift和Objc文件(我已经正确连接了我的lib,包括*-Swift.h文件)。 所以,我的库有这样一个结构 工厂 import Foundation
@objc public class Factory : NSObject{
@objc public func create() -> ModelProtocol
{
return FirstModel()
}
} 模型协议 import Foundation
@objc public protocol ModelProtocol
我的代码出了什么问题?我一直收到这个错误,我不知道为什么它说方法不能是@objc重写,因为参数2的类型不能用Objective-C表示。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
let vc = segue.destinati
我正在用Swift开发一个图形库。代码不能共享,但我做了一个示例here (参见按钮示例,单选按钮专门用于另一个问题)。 我希望我的组件有一个名称空间MyGraphicLibrary:MyGraphicLibrary.Button而不是MyGraphicLibraryButton 示例pod有两个类: // Independent class
@IBDesignable public class CustomButton: UIButton {
...
}
// Namespace for my components
public class MyGraphicLibrary: N
我必须把下面的目标-c代码翻译成斯威夫特。这是Objective 中的一个示例,其中框架提供的Optional协议应用于NSString类型的实例变量。我找到了一个,但没有成功。使用我的MYModel.swift实现,Xcode会抱怨Cannot specialize non-generic type NSString
谢谢你的帮助!
MYModel.swift
@objc(MYModel) public class MYModel : JSONModel {
...
public var name : NSString<Optional>
...
}
MYMod
我创建了NSObject的一个子类,并使用NSObject方法setValuesForKeys()自动设置了我的类属性,它工作得很好。但是现在我设置了这个子类中的嵌套类来再次设置值。这是我的代码。
class User: NSObject {
private let keys = ["id", "first_name", "last_name"]
@objc var id: String?
@objc var first_name: String?
@objc var last_name: String?
我试图让Swift协议在Objective-C文件中工作,但当出现如下错误时,应用程序崩溃。
+[OpenCamera onCameraClose]: unrecognized selector sent to class 0x102ff8580
我不确定我错过了什么。
//Swift: UIViewController代码
@objc protocol CameraViewControllerDelegate {
func onCameraClose()
}
@objc class CameraViewController: UIViewController {
var de
大家好,我是一名中国的iOS工程师。
我正在尝试在iphone上运行protocol buffer,我从google code下载了,并遵循您的介绍。
但是当我在我的终端中输入protoc命令时,我得到了一个错误,例如:
我的命令:> protoc -proto_path=proto/src --objc_out=proto/build proto/src/common.proto
错误消息是:protoc gen-objc: program not found or not executable --objc_out : protoc-gen-objc: Plugin failed,状
我试图在@objc协议中创建一个可选函数,documentType也是@objc。但我发现了一个错误:
不能将方法标记为@objc,因为参数的类型不能用Objective表示。
我的源代码:
@objc enum DocumentType: Int {
case pdf
case png
}
@objc protocol ImageDocumentEditorProtocol: class {
@objc optional func imageDocumentEditorDidCancel(documentType: DocumentType?)
}
我怎样才能解决
在Swift中,不能在协议定义本身中定义函数或属性的默认实现,即:
protocol Container {
//These are fine
associatedtype Item
mutating func append(_ item: Item)
var count: Int { get set }
subscript(i: Int) -> Item { get }
//These are not fine
var defaultValue: Int = 10
mutating func messWithCount(
protocol P : class {
var value:Int {get}
}
class X : P {
var value = 0
init(_ value:Int) {
self.value = value
}
}
var ps:[P] = [X(1), X(2)]
for p in ps {
if let x = p as? X { // works for a single variable
...
}
}
if let xs = ps as? [X] { // doesn'
我必须通过字符串名称表示将值设置为属性。
import Foundation
@objc class A:NSObject {
var x:String = ""
}
var a = A()
a.x = "ddd"
print(a.x)
a.setValue("zzz", forKey:"x")
print(a.x)
在编译过程中出现奇怪的错误:
main.swift:4:2: error: only classes that inherit from NSObject can be declared @objc