How to create a SystemSoundID array

I can’t figure it out.

I can play one sound with:

- (void) initSounds {
    // Get the main bundle for the app
    CFBundleRef mainBundle;
    mainBundle = CFBundleGetMainBundle ();
    // Get the URL to the sound file to play
    soundFileURLRef  =  CFBundleCopyResourceURL (mainBundle,CFSTR ("1"),CFSTR ("wav"),NULL);

    // Create a system sound object representing the sound file
    AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject);
}

-(void) play {
    AudioServicesPlaySystemSound(self.soundFileObject);
}

But I want to create an array of SystemSoundID objects. When I try to do this, I keep getting errors. Can someone show me the code to create an array of soundFileObjects and how do I use this array in AudioServicesPlaySystemSound?

+3
source share
1 answer

SystemSoundIDis an integral, non-class type, so you need to use a wrapper, for example NSNumber, to save this in Cocoa containers, such as NSArray:

// assuming this property:
@property (copy) NSArray *soundFileObjects;

// creating the array:
soundFileObjects = [[NSArray alloc] initWithObjects:
                     [NSNumber numberWithUnsignedLong:soundId],
                     // more ?
                     nil];

// using it, e.g.:
SystemSoundID sid = [[self.soundFileObjects objectAtIndex:0] unsignedLongValue];
AudioServicesPlaySystemSound(sid);
+7
source

Source: https://habr.com/ru/post/1754031/


All Articles