この質問はかなり古いですが、同様の問題があったので、まだ解決策が必要な人のために見つけました。次のコードを使用して、総トラック数とトラック数を取得する方法を見つけました。
NSString *value = @"<0000000a 00140000>" //[item stringValue] (in this case 10/20)
NSString *track_no_hex = [[value componentsSeparatedByString:@" "][0] stringByReplacingOccurrencesOfString:@"<" withString:@""];
NSString *total_track_no_hex = [[value componentsSeparatedByString:@" "][1] stringByReplacingOccurrencesOfString:@">" withString:@""];
NSString *track_no = @"";
for(int k=0;k<=4;k+=4){
unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:[track_no_hex substringWithRange:NSMakeRange(k, 4)]];
[scanner scanHexInt:&result];
if(result == 00){
}
else{
track_no = [NSString stringWithFormat:@"%@%u",track_no,result];
}
}
NSString *total_track_no = @"";
for(int k=0;k<=4;k+=4){
unsigned result = 0;
NSScanner *scanner;
if(k+4<=[total_track_no_hex length]){
scanner = [NSScanner scannerWithString:[total_track_no_hex substringWithRange:NSMakeRange(k, 4)]];
}
else{
}
[scanner scanHexInt:&result];
if(result == 00){
}
else{
total_track_no = [NSString stringWithFormat:@"%@%u",total_track_no,result];
}
}
NSLog(@"%@/%@",track_no, total_track_no); // Output 10/20
これは、iTunes の最大トラック番号が 999 であることを考慮すると、十分な大きさの 14461 未満のトラック番号で問題なく機能します。