HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – NSManagedObject无法符合Swift中的协议大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一个NsmanagedObject和一个常规NSObject的共享接口.在 Objective-c中,我可以使用协议来实现这一目标.但是在Swift中我得到了这个运行时错误.任何方案?提前致谢!

协议产品{
var code:String {get set}
var sp:String {get set}
}

class Stock: NsmanagedObject,Product {

@Nsmanaged var code: String
@Nsmanaged var sp: String

}

错误:架构i386的未定义符号:
“__TFC11YellowPages5Stockg2spSS”,引自:
Stock.o中的__TFC11YellowPages5Stockm2spSS
“__TFC11YellowPages5Stockg4codeSS”,引自:
Stock.o中的__TFC11YellowPages5Stockm4codeSS
ld:找不到架构i386的符号
clang:错误链接器命令失败,退出代码为1(使用-v查看调用)

解决方法

这对我有用.亲自尝试一下,看看它是否有效:
class MyEntity: NsmanagedObject {

    @Nsmanaged var testAttribute: String
}

@objc
protocol MyProtocol {

    var testAttribute: String { get set }
}

extension MyEntity: MyProtocol { }

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
        let myContext = appDelegate.managedObjectContext!
        let entity: MyEntity = NSEntityDescription.insertNewObjectForEntityForName("MyEntity",inManagedObjectContext: myContext) as MyEntity
        foo(entity)
        println(entity.testAttributE)
    }

    func foo(var object: MyProtocol) {
        object.testAttribute = "bar"
    }
}

下面也有用,但我认为以上是更好的方法

@objc
protocol MyProtocol {

    var testAttribute: String { get set }
}

class MyEntity: NsmanagedObject,MyProtocol {

    @Nsmanaged var testAttribute: String
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
        let myContext = appDelegate.managedObjectContext!
        let entity: MyEntity = NSEntityDescription.insertNewObjectForEntityForName("MyEntity",inManagedObjectContext: myContext) as MyEntity
        foo(entity)
        println(entity.testAttributE)
    }

    func foo(var object: MyProtocol) {
        object.testAttribute = "bar"
    }
}

大佬总结

以上是大佬教程为你收集整理的ios – NSManagedObject无法符合Swift中的协议全部内容,希望文章能够帮你解决ios – NSManagedObject无法符合Swift中的协议所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。