Если вы хотите, чтобы курсор возвращался, вы можете рассмотреть что-то вроде этого:
SQLiteDatabase db = dbHelper.getWritableDatabase();
public Cursor fetchByCountryCode(String strCountryCode)
{
/**
* SELECT * FROM Country
* WHERE code = US
*/
return cursor = db.query(true,
"Country", /**< Table name. */
null, /**< All the fields that you want the
cursor to contain; null means all.*/
"code=?", /**< WHERE statement without the WHERE clause. */
new String[] { strCountryCode }, /**< Selection arguments. */
null, null, null, null);
}
/** Fill a cursor with the results. */
Cursor c = fetchByCountryCode("US");
/** Retrieve data from the fields. */
String strCountryCode = c.getString(cursor.getColumnIndex("code"));
/** Assuming that you have a field/column with the name "country_name" */
String strCountryName = c.getString(cursor.getColumnIndex("country_name"));
См. этот фрагмент Genscripts , если вы хотите получить более полную версию. Обратите внимание, что это параметризованный SQL-запрос, поэтому по существу это подготовленный оператор.
Возможно, вам следует попробовать использовать метод NSBundle
method pathForResource:ofType:
для создания пути к файлу.
Следующий код должен успешно воспроизвести аудиофайл. Я использовал его только с mp3
, но я думаю, что он также должен работать с m4a
. Если этот код не работает, вы можете попробовать изменить формат аудиофайла. Для этого кода аудиофайл находится в главной директории проекта.
/* Use this code to play an audio file */
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite
[player play];
Хорошо, попробуйте следующее:
NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a",[[NSBundle mainBundle] resourcePath]];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite
[player play];
Также убедитесь, что вы правильно импортировали:
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
Вам необходимо сохранить сильную ссылку на 'AVAudioPlayer'
@property (strong) AVAudioPlayer *audioPlayer;
И если вы уверены, что ваш аудиофайл находится в следующих ресурсах Bundle, он должен воспроизводиться.
Проект> Этапы сборки> Копировать
Для воспроизведения аудиофайла в комплекте, используя приведенный ниже код, если вы генерируете системный идентификатор звука
for(int i = 0 ;i< 5;i++)
{
SystemSoundID soundFileObject;
NSString *audioFileName = [NSString stringWithFormat:@"Alarm%d",i+1];
NSURL *tapSound = [[NSBundle mainBundle] URLForResource: audioFileName
withExtension: @"caf"];
// Store the URL as a CFURLRef instance
CFURLRef soundFileURLRef = (__bridge CFURLRef) tapSound;
// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (
soundFileURLRef,
&soundFileObject
);
[alarmToneIdList addObject:[NSNumber numberWithUnsignedLong:soundFileObject]];
}
Вы можете воспроизводить звук, используя приведенный ниже код
AudioServicesPlaySystemSound([[alarmToneIdList objectAtIndex:row]unsignedLongValue]);
Для достижения этой цели ниже фреймворк нужно добавить в свой Xcode
AudioToolbox
Наконец, нижеприведенные заголовочные файлы необходимо импортировать в контроллер
#import AudioToolbox/AudioToolbox.h
#import AudioToolbox/AudioServices.h
Обновлено для Swift 4 Воспроизведение из основного комплекта - только для iOS 11
import AVFoundation
var player: AVAudioPlayer?
Следующий код загружает звуковой файл и воспроизводит его, возвращая при необходимости ошибку.
guard let url = Bundle.main.url(forResource: "test", withExtension: "m4a") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
guard let player = player else { return }
player.play()
} catch let error {
// Prints a readable error
print(error.localizedDescription)
}
Сначала импортируйте этот фреймворк в ваш файл
#import <AVFoundation/AVFoundation.h>
Затем объявите экземпляр AVAudioPlayer
.
AVAudioPlayer *audioPlayer;
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Name of your audio file"
ofType:@"type of your audio file example: mp3"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
Swift 4.2
var soundFilePath = "\(Bundle.main.resourcePath ?? "")/test.m4a"
var soundFileURL = URL(fileURLWithPath: soundFilePath)
var player = try? AVAudioPlayer(contentsOf: soundFileURL)
player?.numberOfLoops = -1 //Infinite
player?.play()
Воспроизвести файл с расширением .caf, .m4a, .mp4, .mp3, .wav, .aif
Скачать следующие два файла из GitHub
SoundManager.h
SoundManager.m
Добавьте эти файлы в свой проект
Также добавьте аудиофайлы в папку ресурсов ( примеры файлов )
mysound.mp3, song.mp3
Импорт Заголовочный файл в нужном файле
#import "SoundManager.h"
И добавьте следующие две строки в - (void) viewDidLoad
[SoundManager sharedManager].allowsBackgroundMusic = YES;
[[SoundManager sharedManager] prepareToPlay];
Используйте следующую строку для воспроизведения звука (mysound.mp3 )
[[SoundManager sharedManager] playSound:@"mysound" looping:NO];
Используйте следующую строку для остановки звука (mysound.mp3)
[[SoundManager sharedManager] stopSound:@"mysound"];
Также вы можете воспроизводить музыку (song.mp3) как
[[SoundManager sharedManager] playMusic:@"song" looping:YES];
И можно остановить музыку как
[[SoundManager sharedManager] stopMusic];
Завершить Документация находится на GitHub