Я родом из Visual Basic (давным-давно), поэтому будьте осторожны, пожалуйста ...
Я работаю над приложением для iPhone, и мне нужно отправить NSString (я полагаю, что это NSString для функции, которая собирается преобразовать NSString в целое число и вернуть значение. Вероятно, значение должно быть возвращено как целое число, поскольку атрибут Core Data является целым числом.
Мне нужно отобразить время песни в UILabel, и это NSSTring. Я храню данные в атрибуте Core Data в виде целого числа, так как с ним легче выполнять вычисления и т. Д. Одна из вещей, которые я делаю, - это преобразование секунд (int) в строку «3:32» NSString для Этикетка.
cell.profileItemsSongDurationLabel.text= ConvertSecondstoMMSS([[managedObject valueForKey:@"profileItemsSongDurationInSeconds"] description]);
// implicit declaration of function 'ConvertSecondstoMMSS' is invalid in C99
// Implicit conversion of 'int' to 'NSString *' is disallowed with ARC
// Incompatible integer to pointer conversion passing 'int' to parameter of type 'NSString *'
- (NSString *)ConvertSecondstoMMSS:(NSString *)songLength // Conflicting return type in implementation of 'ConvertSecondstoMMSS:': 'int' vs 'NSString *'
{
NSString *lengthOfSongInmmss;
int songLengthInSeconds = [songLength intValue];
int hours = songLengthInSeconds/ 3600;
int minutes = (songLengthInSeconds % 3600) / 60;
int seconds = songLengthInSeconds % 60;
return lengthOfSongInmmss = [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds];
}
Естественно, у этого кода есть некоторые проблемы, но я был бы признателен за быстрый урок о том, что не так и как это исправить.
Заранее спасибо
-Поль
Пересмотренное решение:
int convertToInt = [[[managedObject valueForKey:@"profileItemsSongDurationInSeconds"] description] intValue];
NSLog(@"convertToInt: %d", convertToInt);
cell.profileItemsSongDurationLabel.text = [self convertSecondstoMMSS:convertToInt];
- (NSString *)convertSecondstoMMSS:(int)songLength
{
NSString *lengthOfSongInmmss;
int hours = songLength/ 3600;
int minutes = (songLength % 3600) / 60;
int seconds = songLength % 60;
return lengthOfSongInmmss = [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds];
}
Единственный оставшийся элемент, который нужно разрешить, это случай lengthOfSongInmmss. Редко у меня будет песня продолжительностью в час, она есть только для «на всякий случай». Есть ли способ, чтобы час не отображался в строковом формате, или лучше сделать простое выражение «если»?
Еще раз спасибо!