简体   繁体   中英

Extracting NSManagedObject attribute values from NSOrderedSet

I have an initializer that takes an array of Strings as a parameter. Rather than re-write the class and risk breaking things, I'd prefer to feed the initializer what it wants.

I'm trying to extract NSStrings from NSManagedObjects stored in an NSOrderedSet .

Here's what I've tried:

    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)")
    }

I'm missing something basic, but I'm not sure what. How would I enumerate the objects in an NSOrderedSet and extract the value of the attributes for the entities contained within the set?

I would suggest reading the documentation on KVC (Key Value Coding) as you can write this as one line of code:

let filenameArray = soundsToPlay.valueForKey("fileName").array()

The call to valueForKey will return an NSOrderedSet of the string and then you can convert that to an array with a call to array()

I figured it out. I was missing a step:

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)")
}

那可能是因为编译器认为“元素”是NSManagedObject的实例,并且它没有fileName,请尝试显式类型转换,类似

for element: YourClass in soundsToPlay 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM