북마크를 설정할 수있는 Audiobookplayer를 만들고 싶습니다. MPMediaQuery를 사용하여 내 라이브러리에서 오디오 북을로드해도 문제가 없지만 iTunes를 통해 오디오 북을 가져 오면 내 realmfile에 남아 있습니다.렐름과 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