Avassetexpordsession не удается на iPhone 3G - но не на iPhone 4

IM преобразую *. CAF файл с использованием Avassetexpordsion Это работает довольно хорошо на симуляторе 4.0 iPhone 4 TestDevice.

К сожалению, он всегда терпит неудачу на iPhone 3G со следующей функцией:

AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:avAsset presetName:AVAssetExportPresetAppleM4A];

 if (exportSession == nil) {

      NSLog(@"no export session");

      return NO;

 }

 exportSession.outputURL = [NSURL fileURLWithPath:self.tempDir];

 exportSession.outputFileType = AVFileTypeAppleM4A;


 [exportSession exportAsynchronouslyWithCompletionHandler:^{



    if (AVAssetExportSessionStatusCompleted == exportSession.status) {

        NSLog(@"AVAssetExportSessionStatusCompleted");


 } else if (AVAssetExportSessionStatusFailed == exportSession.status) {

        // a failure may happen because of an event out of your control

        // for example, an interruption like a phone call comming in

        // make sure and handle this case appropriately

        NSLog(@"AVAssetExportSessionStatusFailed");

     NSLog(@"%@", [exportSession.error description]);

    } else {

        NSLog(@"Export Session Status: %d", exportSession.status);

    }

}];

. Следующая ошибка брошена каждый раз.

Ошибка domain = avfoundationerrordomain код = -11823 "не может сохранить" userInfo = 0x16fb20 {nslocalizedrecverysuggestion = попробуйте сохранить снова., Nslocalizeddescription = не может сохранить}

, что может быть причиной для этого?

---121 1056273-

Как я могу вставить много строк в таблицу MySQL и вернуть новые идентификаторы? Обычно я могу вставить строку в таблицу MySQL и получить запись на Last_insert_id. Теперь, однако, я хочу набрать много строк в таблицу и вернуть массив идентификаторов. Кто-нибудь знает, как я могу сделать ...

Обычно я могу вставить строку в таблицу MySQL и получить last_insert_id . Теперь, однако, я хочу набрать много строк в таблицу и вернуть массив идентификаторов. Кто-нибудь знает, как я могу сделать это?

Есть несколько подобных вопросов, но они не совсем одинаковы. Я не хочу вставлять новый идентификатор на любую временную таблицу; Я просто хочу вернуть массив IDS.

Могу ли я получить фастерантид из насыпной вставки?

Оператор вставки MySQL MULITPLE ROW SELECT с помощью last_insert_Id ()

70
задан Community 23 May 2017 в 10:31
поделиться

1 ответ

Я не был бы уверен, что автоматическое инкрементное значение увеличит объект на 1. и будут огромные проблемы, если Ваш DB будет иметь Ведущее устройство//Основная репликация и разрешить исключение дубликата auto_increment. AI будет +2 вместо +1, также если будет еще одно ведущее устройство, он дойдет до +3. таким образом, реле на вещи как AUTO_INCREMENT повышается для 1, уничтожает Ваш проект.

я вижу только некоторые хорошие варианты сделать это.

этот отрывок SQL не будет иметь никаких проблем с несколькими ведущими устройствами и даст хорошие результаты, пока Вам не будут нужны только вставленные записи. по нескольким запросам без транзакций может поймать другие записи вставок.

START TRANSACTION;
SELECT max(id) into @maxLastId FROM `main_table`;
INSERT INTO `main_table` (`value`) VALUES ('first'), ('second') ON DUPLICATE KEY UPDATE `value` = VALUES(`value`);
SELECT `id` FROM `main_table` WHERE id > @maxLastId OR @maxLastId IS NULL;
COMMIT;

(при необходимости также в обновленных записях ДУБЛИРУЮЩИМСЯ КЛЮЧЕВЫМ ОБНОВЛЕНИЕМ) необходимо будет осуществить рефакторинг базу данных немного, и SQL будет похож затем, (безопасный для транзакций и никаких транзакций в одном соединении.)

#START TRANSACTION    
INSERT INTO bulk_inserts VALUES (null);
SET @blukTransactionId = LAST_INSERT_ID();
SELECT  @blukTransactionId, LAST_INSERT_ID();
INSERT INTO `main_table` (`value`, `transaction_id`) VALUES ('first', @blukTransactionId), ('second', @blukTransactionId) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `transaction_id` = VALUES(`transaction_id`);
SELECT  @blukTransactionId, LAST_INSERT_ID();
SELECT id FROM `main_table` WHERE `transaction_id` = @blukTransactionId;
#COMMIT

оба случая безопасны к межнациональному. сначала покажет, что Вы только вставили записи, и второй даст Вам всем записи, даже обновленные.

также те опции будут работать даже со ВСТАВКОЙ, ИГНОРИРУЮТ...

0
ответ дан 24 November 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: