我從MPMediaPickerController獲取媒體項目的ID。根據文檔,該值是一個包含uint64_t(unsigned long long)的NSNumber對象。我想將其轉換爲NSString以保存在我的數據模型中。但是,當我將它轉換爲字符串時,它的值發生了變化,當我將它轉換回數字時,它會再次發生變化!顯然,我不瞭解這些數據類型的一些東西。你能幫我嗎?需要幫助將MPMediaItemPropertyPersistentID轉換爲字符串,然後再返回
MPMediaItem *mediaPicked;
// set mediaPicked to an MPMedia item using MPMediaPickerController...
NSLog(@"id as number: %qu", [mediaPicked valueForProperty:MPMediaItemPropertyPersistentID]); // outputs 566042331449280
NSLog(@"id as string: %@", [[mediaPicked valueForProperty:MPMediaItemPropertyPersistentID] stringValue]); // outputs 16204893883745507648
NSLog(@"id as number: %qu", [[[mediaPicked valueForProperty:MPMediaItemPropertyPersistentID] stringValue] longLongValue]); // outputs 9223372036854775807
如果我嘗試在轉換之前播放媒體項目,它始終有效。但是,如果我在嘗試播放媒體項目後嘗試播放媒體內容,則只有大約一半的媒體項目可以使用。所以一些ID值在轉換中存活,有些則不存在。
我有一種感覺我越來越差的輸出,但「NSNumber包裹圍繞一個未簽署的長期合同「將我拋棄。如果我將NSLog更改爲使用%@而不是%qu,那麼我可以看到使用stringValue從原始NSNumber轉換爲NSString沒有問題。但是,正如你所說,沒有可比較的方式將NSString轉換回NSNumber。但是,隨着我的問題更好的定義,我做了一些更多的搜索,並在這裏找到了一個替代方案:http://stackoverflow.com/questions/1181637/storing-and-retrieving-unsigned-long-long-value-to-from-nsstring 。謝謝你的幫助! – arlomedia 2011-01-07 16:46:05