Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不能使用“;说明“;带有NSObject的关键字_Ios_Xcode_Swift3 - Fatal编程技术网

Ios 不能使用“;说明“;带有NSObject的关键字

Ios 不能使用“;说明“;带有NSObject的关键字,ios,xcode,swift3,Ios,Xcode,Swift3,我正在解析一个json并使用这个NSObject类来访问值,但是我不能使用“description”关键字来匹配json数据中的键“description”。编译器说“描述是NSObject中的一个内部属性” 因为“description”已经是NSObject的继承方法,所以不能有同名的var。不过,将var重命名为“desc”是一个选项。我尝试过,然后得到一个未知的密钥异常,我认为json“description”密钥必须与NS对象变量名称匹配。生成异常的代码是什么?如果您控制了web服务,

我正在解析一个json并使用这个
NSObject
类来访问值,但是我不能使用“description”关键字来匹配json数据中的键“description”。编译器说“描述是
NSObject
中的一个内部属性”


因为“description”已经是NSObject的继承方法,所以不能有同名的var。不过,将var重命名为“desc”是一个选项。

我尝试过,然后得到一个未知的密钥异常,我认为json“description”密钥必须与NS对象变量名称匹配。生成异常的代码是什么?如果您控制了web服务,并且这样做很有意义,那么您也可以将其从描述重命名为该级别的其他内容。让json=尝试JSONSerialization.jsonObject(with:data!,options:.mutableContainers)作为?(json?[“数据”]as![[String:AnyObject]]){let dataCategory=JsonDetails()dataCategory.setValuesForKeys(dict)dataCategories.append(dataCategory)}它在setValuesForKeys处中断:当传入对象尝试设置“description”时,它有一个键“description”,而JsonDetails没有在JsonDetails对象上引发异常。这里更好的做法是为类编写一个init方法,该方法使用字典,自己设置值,而不是使用setValuesForKeys。然后用字典初始化对象。此外,正如@vadian所提到的,您的类在这里子类NSObject似乎没有什么好的理由(它是否需要与ObjC进行互操作?)在ObjC上使用Swift的一个主要原因是类型安全,而setValuesForKeys之类的方法违反了这一理念。拥有该方法不是子类NSObject的好理由。您真的需要从
NSObject
继承吗?不要随意地全局使用optionals来代替初始值设定项。我对ios不熟悉,我从一个教程中发现了这一点,我不知道还有其他方法可以做到。var dataCategories=[jsondeals]()用于dict in(json?[“data”]as![[String:AnyObject]]{let dataCategory=jsondeails()dataCategory.setValuesForKeys(dict)dataCategories.append(dataCategory)}.//这是json代码在正常情况下,您不需要从iOS中的
NSObject
继承。您需要它以实现Objective-C兼容性,或者如果您打算使用KVC。只需删除
NSObject
,您就可以使用
description
而不会出错。PS:
setValuesForKeys
确实是一种需要
NSO>的KVC方法bject
。但也有(更合适的)本机Swift解决方案。
class JsonDetails: NSObject {

    var id: NSNumber?
    var title: String?
    var description: String?
    var address: String?
    var postcode: String?
    var phoneNumber: String?
    var latitude: String?
    var longitude: String?
    var image: [Img]?

    class Img: NSObject {
        var small: String?
        var medium: String?
        var large: String?
    }
}