热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NSObject的值(forKey:)无法在Swift4中运行

如何解决《NSObject的值(forKey:)无法在Swift4中运行》经验,为你挑选了2个好方法。

在Xcode 9 Beta中试用Swift 4.

出于某种原因,我在NSObject上使用键值访问器时遇到了崩溃.

有任何想法吗?

import Cocoa

class Person: NSObject {
    var name = ""
    var age = 0
}

let alpha = Person()
alpha.name = "Robert"
alpha.age = 53

alpha.value(forKey: "name")
// error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

Sulthan.. 19

键值编码需要Objective-C.在Swift 4中,您必须明确标记可从Obj-C访问的成员:

@objcMembers
class Person: NSObject {

要么

class Person: NSObject {
    @objc var name = ""
    var age = 0
}

参见Swift Evolution 160



1> Sulthan..:

键值编码需要Objective-C.在Swift 4中,您必须明确标记可从Obj-C访问的成员:

@objcMembers
class Person: NSObject {

要么

class Person: NSObject {
    @objc var name = ""
    var age = 0
}

参见Swift Evolution 160



2> Code Differe..:

ObjC推理在Swift 4中受到限制.您可以使用objcMembers编译器标记您的类以生成符合ObjC的访问器:

@objcMembers
class Person: NSObject {
    var name = ""
    var age = 0
}

或者通过在Build Settings 中将Swift 3 Objc Inference设置为On来恢复旧行为:

在此输入图像描述


推荐阅读
author-avatar
六九四四708
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有