Ios ';任何对象';不';“我没有会员”;contactUID";甚至连Intelitype都说是吗?
另一个ameture hour Swift编程问题 我一直在从对象“Any object”“Results”数组返回对象的值。intellitype表示数组中有一个值为“ContactUID”的对象,但是当我尝试使用ContactUID时,会出现一个错误,即“AnyObject”不包含成员“ContactUID” 名为HBCContactList的数组成功返回FirstName、LastName和代码中屏幕上列出的所有其他项。但是,它不会返回值“ContactUID” 这个模型有正确的项目。然而,与所有其他人不同。。。ContactUID是INT64而不是字符串。。。我已经添加了一些屏幕截图来帮助解释过程。对不起,这听起来很复杂,但我想我错过了一些愚蠢的事情Ios ';任何对象';不';“我没有会员”;contactUID";甚至连Intelitype都说是吗?,ios,arrays,json,xcode,swift,Ios,Arrays,Json,Xcode,Swift,另一个ameture hour Swift编程问题 我一直在从对象“Any object”“Results”数组返回对象的值。intellitype表示数组中有一个值为“ContactUID”的对象,但是当我尝试使用ContactUID时,会出现一个错误,即“AnyObject”不包含成员“ContactUID” 名为HBCContactList的数组成功返回FirstName、LastName和代码中屏幕上列出的所有其他项。但是,它不会返回值“ContactUID” 这个模型有正确的项目。然而
在iOS上自动完成并不总是准确的,它通常只列出所有可能的选择器/方法 这里的问题的根源在于,即使您知道HCCContactList只保存HBCDirectoryModel对象,编译器也不会作为
MOContext。executeFetchRequest(freq,error:nil)
返回一个数组,该数组声明它包含任何对象([AnyObject]
/数组
)。为了将这些对象中的任何一个引用为HBCDirectoryModel
,您需要对此类型执行强制转换
最简单的方法是将HCCContactList
声明为HBCDirectoryModel
的数组,而不是AnyObject
,然后将调用MOContext.executeFetchRequest()
的结果强制转换为同一类型
你可以这样做
var HCCContactList: Array<HBCDirectoryModel> = []
HCCContactList = MOContext.executeFetchRequest(freq, error: nil) as Array<HBCDirectoryModel>
使用第二个较短的语法解决了我遇到的问题。你说的话很有道理。。你会说声明为ANYOBJECT是不好的做法吗?是的,在Swift中工作时,你应该明确类型,因为它提供了很多好处。然而,由于许多苹果框架都是在后台用Objective-C编写的,它们通常会返回您[AnyObject]
,因为Objective-C不支持通用集合。然而,正如我在上面所展示的,你可以将它们转换成一个普通的集合,并快速加入“原样”阵容。干杯,格伦。当我继续学习的时候,我会把一些其他人换过来,因为我想在最佳实践中工作。谢谢你的帮助。没问题,游泳很愉快
var HCCContactList:[HBCDirectoryModel] = []
HCCContactList = MOContext.executeFetchRequest(freq, error: nil) as [HBCDirectoryModel]