Я использовал этот ответ, чтобы преобразовать UIImage в NSSstring,закодированной строки из UIImage возвращают нуль
https://stackoverflow.com/a/11251478/3741799
кодировать
- (NSString *)encodeToBase64String:(UIImage *)image {
return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
декодировать
- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
return [UIImage imageWithData:data];
}
здесь закодировать изображение и поместите NSString в класс NSObject
self.newData.imageString = [self encodeToBase64String: image];
добавить новый объект в Tableview
- (Void) insertNewObject: (id) sender {
if (! self.objects) {
[self.objects addObject: self.newData.imageString];
[self.tableView reloadData];
}
[self.objects InsertObject: self.newData atIndex: 0];
NSIndexPath * indexPath = [NSIndexPath indexPathForRow: 0 inSection: 0];
[self.tableView insertRowsAtIndexPaths: @ [indexPath] withRowAnimation: UITableViewRowAnimationAutomatic];
}
затем загрузить новый объект в TableView!
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
static NSString * CellIdentifier = @ "Custom";
CustomCell * cell = (CustomCell *) [self.tableView dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath];
ObjectClass * object = [self.objects objectAtIndex: indexPath.row];
cell.imageView.image = [self decodeBase64ToImage: object.imageString];
return cell;
}
Но когда я загрузить изображение в ячейке не может декодировать строку, поскольку она имеет нулевое значение, и сбой приложения!
* Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '* - [_ NSPlaceholderData initWithBase64EncodedString: опции]: ноль аргумента строки'
Я думаю, что проблема заключается в кодировка, но я не могу решить ее самостоятельно!
Где я ошибаюсь?
благодаря
ВОПРОС UPDATE
Zaph вопрос правильно, я пытаюсь объяснить лучше: У меня есть пустой вид таблицы, пользователь добавляет изображение и текстовую строку для каждого ряд. Так что я попытался использовать это руководство официальный Apple,
В классе XYZToDoItem добавьте свойство @property NSString * ITEMNAME; и я могу легко добавить текстовую строку, созданную пользователем. Но как я могу добавить изображения в этом классе? Так что я решил преобразовать изображения в строки и добавить свойство @property NSString * imageString; Но что-то не так, и я не могу этого сделать! Можете ли вы предложить лучший способ сделать это?
Большое вам спасибо за вашу поддержку и помощь!
Почему вы конвертируете 'NSData' в кодировку Base64 NSString и обратно? Что вы пытаетесь выполнить с помощью этой кодировки/декодирования? – zaph
в 'cellForRowAtIndexPath:' '' self.objects' существуют? В вашем методе 'insertNewObject:' у вас есть if, который проверяет, является ли self.objects nil 'if (! Self.objects) {', и если это так, он вызывает 'addObject:' на этом nil. Наверное, вы сначала хотели создать 'self.objects', а затем вызвать' addObject: '. –
Спасибо, Заф, я уточню вопрос !! – Ragazzetto