ブックマークを設定できるAudiobookplayerを構築したいと思います。私のライブラリからオーディオブックをMPMediaQueryで読み込むのはうまくいきますが、iTunesからオーディオブックを取り除くと、それは私のリアルファイルにとどまります。レルムをMPMediaQueryで使用する
プレイリストがiTunes経由で更新されたときに自動的にエントリを削除したいのですが、どうやって解決できないのでしょうか。
ここに私のコードです。
class Books: Object {
dynamic var artistName: String?
dynamic var albumTitle: String?
dynamic var artwork: NSData?
dynamic var albumUrl: String?
dynamic var persistentID: String?
let parts = List<BookParts>()
override static func primaryKey() -> String? {
return "persistentID"
}
override class func indexedProperties() -> [String] {
return ["albumTitle"]
}
convenience init(artistName: String, albumTitle: String, albumUrl: String) {
self.init()
self.artistName = artistName
self.albumTitle = albumTitle
self.albumUrl = albumUrl
}
class BookQuery {
let realm = try! Realm()
var bookItems = Array<Books>()
var partItems = Array<BookParts>()
func getBooks() {
let query: MPMediaQuery = MPMediaQuery.audiobooks()
query.groupingType = .album
let collection: [MPMediaItemCollection] = query.collections!
try! realm.write {
for allbooks in collection {
let item = allbooks.representativeItem
let book = Books()
let id = item?.value(forProperty: MPMediaItemPropertyAlbumPersistentID) as! Int
book.artistName = item?.artist
book.albumTitle = item?.albumTitle
book.albumUrl = item?.assetURL?.absoluteString
book.artwork = Helper.getArtwork(item?.artwork) as NSData?
book.persistentID = id.stringValue
realm.add(book, update: true)
guard realm.object(ofType: Books.self, forPrimaryKey: "persistentID") != nil else {
continue
}
bookItems.append(book)
}
}
}
}
私はLibraryViewControllerの "viewDidLoad"でMediaQueryを呼び出しています。 私はかなり新しいコーディングをしており、これをしばらく解決しようとしています。 ありがとうございました。
ありがとうございます。 – cmag0505