Created
April 15, 2025 09:41
-
-
Save senseilearning/22e36277bc3afbb29a508886a88ebda4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
enum FileError: Error { | |
case fileNotFound | |
case dataReadError(Error) | |
} | |
func loadMp3DataFromBundle(fileName: String, fileExtension: String = "mp3") -> Result<Data, FileError> { | |
// 1. バンドルからファイルのURLを取得 | |
guard let fileURL = Bundle.main.url(forResource: fileName, withExtension: fileExtension) else { | |
print("Error: \(fileName).\(fileExtension) not found in the app bundle.") | |
return .failure(.fileNotFound) | |
} | |
// 2. URLからDataオブジェクトとして読み込む | |
do { | |
let mp3Data = try Data(contentsOf: fileURL) | |
print("Successfully loaded \(mp3Data.count) bytes from \(fileName).\(fileExtension)") | |
return .success(mp3Data) | |
} catch { | |
print("Error reading data from \(fileURL): \(error)") | |
return .failure(.dataReadError(error)) | |
} | |
} | |
// --- 使用例 --- | |
let result = loadMp3DataFromBundle(fileName: "music") // "music.mp3"を読み込む | |
switch result { | |
case .success(let mp3Data): | |
// mp3Data は Data 型 (バイト列) | |
// この mp3Data をKotlin側に転送すれば、Kotlin側では ByteArray として扱えます。 | |
print("MP3 Data loaded successfully (\(mp3Data.count) bytes).") | |
// 必要であれば、Swift内で符号付きバイト配列 ([Int8]) に変換することも可能ですが、 | |
// 通常は Data のまま転送・使用します。 | |
// let signedBytes: [Int8] = mp3Data.map { Int8(bitPattern: $0) } | |
// print("First 10 signed bytes: \(signedBytes.prefix(10))") | |
case .failure(let error): | |
print("Failed to load MP3 data: \(error)") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment