Tôi lặp qua tất cả các bài hát từ thư viện nhạc của một iPhone sử dụng đoạn mã sau:NSNumber cho MPMediaItemPropertyPersistentID để NSString và ngược lại
NSArray * songs = [[NSArray alloc] initWithArray:[[MPMediaQuery songsQuery] collections]];
for (MPMediaItemCollection * item in songs){
NSString * persistentID = [[[item representativeItem] valueForProperty:MPMediaItemPropertyPersistentID] stringValue];
// Do something with it.
}
[songs release];
thứ Khá cơ bản.
Tôi nhận được PersistentID là NSString
vì tôi cần ghi nó vào một tệp XML (để truyền qua mạng sang thiết bị khác). Do đó lý do tôi không thể chỉ để nó như là một NSNumber
.
Thiết bị kia sau đó sẽ yêu cầu iPhone phát bản nhạc bằng cách truyền lại PersistentID trở lại.
Tại thời điểm này, iPhone có NSString
của PersistentID của bản nhạc cần phát.
Thật khó để lặp lại từng bài hát một lần nữa và so sánh PersistentID cho đến khi tôi tìm bản nhạc mình muốn, vì vậy tôi đang cố sử dụng MPMediaPropertyPredicate
để tìm kiếm trên iPhone.
Tôi đang sử dụng đoạn mã sau cho tìm kiếm:
MPMediaPropertyPredicate * predicate = [MPMediaPropertyPredicate predicateWithValue:persistentID forProperty:MPMediaItemPropertyPersistentID];
MPMediaQuery * songsQuery = [[MPMediaQuery alloc] init];
[songsQuery addFilterPredicate:predicate];
if ([[songsQuery items] count]){
MPMediaItem * item = [[songsQuery items] objectAtIndex:0];
// Play item.
}
[songsQuery release];
đâu persistentID
là NSString
từ trước đó.
Thật kỳ lạ, tính năng này hoạt động đối với một số bài hát chứ không phải cho những bài hát khác. tức là, đôi khi mảng items
không trống, mặc dù tôi đang chuyển một số NSString
, không phải là NSNumber
.
Tôi tự hỏi nếu có cách nào để chuyển đổi số NSString
của mình về số NSNumber
từ đó và cách tôi có thể thực hiện điều đó.
CẬP NHẬT: Tôi đã thử các NSNumberFormatter, tôi cũng đã thử một cái gì đó như:
[NSNumber numberWithFloat:[persID floatValue]];
Tôi đã thử tất cả các cách tiêu chuẩn để làm việc đó mà không cần áp dụng.
+1 cho giải pháp. Nếu không chuyển đổi sang NSNumber tôi đã cố gắng nhập NSString vào vị từ và trả về 0 mục. hơn nửa ngày đã cố gắng gỡ lỗi. Giải pháp của bạn đã giúp. Cảm ơn. – jkr
Giải pháp chuyên nghiệp. Cảm ơn! – jarryd