我有一个初始化程序,它将Strings
数组作为参数。我没有重新编写课程并冒险破坏事物,而是更愿意为初始化程序提供所需的资源。
我试图从存储在NSStrings
中的NSManagedObjects
中提取NSOrderedSet
。
以下是我尝试的内容:
let soundsToPlay = sequenceToPlay.sounds as NSOrderedSet
for element in soundsToPlay {
// this prints out the object in console
print("\(element)")
// this, doesn't give me accessors for the sound object
// print("\(element.fileName)")
}
我错过了一些基本的东西,但我不确定是什么。如何枚举NSOrderedSet中的对象并提取集合中包含的实体的属性值?
答案 0 :(得分:3)
我建议您阅读有关KVC(键值编码)的文档,因为您可以将其写为一行代码:
let filenameArray = soundsToPlay.valueForKey("fileName").array()
对valueForKey
的调用将返回字符串的NSOrderedSet
,然后您可以将其转换为调用array()
的数组
答案 1 :(得分:0)
我明白了。我错过了一步:
let soundsToPlay = sequenceToPlay.sounds as NSOrderedSet
for element in soundsToPlay {
// I have to tell the compiler what type of thing my thing is
let whatIWantToAccess = element as! MyObjectINeedAccessorsFor
print("\(whatIWantToAccess.fileName)")
}
答案 2 :(得分:0)
这可能是因为编译器认为“element”是NSManagedObject的实例并且它没有fileName,请尝试使用显式类型转换,例如
for element: YourClass in soundsToPlay