从NSOrderedSet中提取NSManagedObject属性值

时间:2015-10-21 15:07:03

标签: ios swift swift2

我有一个初始化程序,它将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中的对象并提取集合中包含的实体的属性值?

3 个答案:

答案 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