Ios 使用objective-c分配到属性swift 3的无设置器方法

Ios 使用objective-c分配到属性swift 3的无设置器方法,ios,swift3,xcode8,Ios,Swift3,Xcode8,我在我的一个swift课程中使用以下代码: import UIKit public class BRUFIMobile: NSObject { public var mobileNumber : NSString? public var provider : NSString? public var aliasName: NSString? public var aliasName_en : NSString? @objc public var

我在我的一个swift课程中使用以下代码:

    import UIKit

public class BRUFIMobile: NSObject {

    public var mobileNumber : NSString?
    public var provider : NSString?
    public var aliasName: NSString?
    public var aliasName_en : NSString?
    @objc public var isDefault: Bool

    public override init() {
        self.isDefault = false
        super.init()
    }

}
我的项目包含objective-c和swift代码。代码在xCode 7上运行良好,但现在通过更新到xCode 8,我得到以下错误:

No setter method 'setIsDefault:' for assignment to property
我在objective-c代码中使用如下属性:

   + (BRUFIMobile *) convertUFIMobileToBRUFIMobile:(UFIMobile *) ufimobile
{
    BRUFIMobile *brUFIMobile = [[BRUFIMobile alloc] init];
    brUFIMobile.mobileNumber = ufimobile.number;
    brUFIMobile.provider = ufimobile.provider;
    brUFIMobile.aliasName = ufimobile.aliasName;
    brUFIMobile.aliasName_en = ufimobile.aliasName_en;
    brUFIMobile.isDefault = [ufimobile.isDefault boolValue];

    return brUFIMobile;
}

现在是否有必要手动定义Seetter?

Swift 3 beta对具有前导
is
的属性进行特殊处理。 对于属性
isDefault
,Swift生成
isDefault
作为getter和
setDefault:
作为setter(而不是
setIsDefault:

在Objective-C代码中使用
setDefault:
,或者将其设置为计算属性并手动指定
@objc
名称


(增补) “使其成为计算属性”的意思如下:

private var _default: Bool = false
public var isDefault: Bool {
    @objc(isDefault) get {
        return _default
    }
    @objc(setIsDefault:) set {
        self._default = newValue
    }
}

(更新) 据我测试,这似乎是可行的:

@objc(isDefault) public var isDefault: Bool
比“使其成为计算属性”简单一点。请试一试


(更新2)

苹果公司的工作人员已经确认“这是一个已知的问题,将在未来的测试版中修复:”

这不是一个核心数据案例。但解决方案也适用于这个问题。 (遗憾的是,到目前为止,Xcode 8 beta 2不包括此修复。)


(更新3)
Xcode 8 beta 3发行说明中说,此功能已被删除,我已确认,由于没有
@objc
属性,Objective-C setter
setIsDefault:
可用于
Bool
属性
isDefault

,我不理解这一部分:“将其设为计算属性并手动指定@objc名称。”请你再详细说明一下好吗?@HuseinBehboodiRad在我的回答中加了一个例子。