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 и получить last_insert_id
. Теперь, однако, я хочу набрать много строк в таблицу и вернуть массив идентификаторов. Кто-нибудь знает, как я могу сделать это?
Есть несколько подобных вопросов, но они не совсем одинаковы. Я не хочу вставлять новый идентификатор на любую временную таблицу; Я просто хочу вернуть массив IDS.
Могу ли я получить фастерантид из насыпной вставки?
Оператор вставки MySQL MULITPLE ROW SELECT с помощью last_insert_Id ()
Я не был бы уверен, что автоматическое инкрементное значение увеличит объект на 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
оба случая безопасны к межнациональному. сначала покажет, что Вы только вставили записи, и второй даст Вам всем записи, даже обновленные.
также те опции будут работать даже со ВСТАВКОЙ, ИГНОРИРУЮТ...