Хранение c ++ структур / объектов в NSData

0

Я разрабатываю iOS с OpenCV. OpenCV является библиотекой изображений с открытым исходным кодом и работает с C++.

Я хочу сохранить некоторые данные из Библиотеки в объекте NSData. Возможно ли преобразовать структуру C++ в NSData без потери объекта?

- (void)addMat:(cv::Mat)mat andImageName:(NSString *)name {


self.myMat = [NSData dataWithBytes:&mat length:sizeof(mat)];
self.imageName = name;

}

Теперь я использую код выше. Но в NSData хранятся указатели, а не фактические данные. Когда я пытаюсь вернуть объект назад

указатель освобожден не был выделен * установить точку останова в malloc_error_break для отладки

Мои данные должны храниться в базе данных SqLite.

У вас есть идея конвертировать все?

Я попытался преобразовать каждое свойство. Это хорошо работало для некоторых свойств, а для других это не сработало.

Надеюсь, ты поможешь мне.

Спасибо.

Приветствую,

Александр Генрих

  • 0
    выглядит хорошо, как вы пытаетесь вернуть структуру?
  • 0
    cv :: Mat mat; [self.myMat getBytes: & mat length: sizeof (mat)]; возвратный коврик; Как сказал Cy-4Ah, указатели теряются.
Теги:
opencv
nsdata
mat

1 ответ

1

Вы можете писать байты из объектов внутри данных, но не хранить объект. Например, объект может иметь указатели на других объектах, и через некоторое время они могут стать недействительными, но ваша NSData-копия не узнает об этом.

Вы должны включить Objective- C++ и работать напрямую с структурами/классами C++.

  • 0
    Я работаю в Objective C ++ Можно ли хранить структуру C ++ другими способами? Без потери указателей
  • 0
    @ Sn0wfreeze, зачем и где нужно хранить предметы? Почему вы не можете просто использовать типы из OpenCV?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню