2012-06-26 13 views
6

<> <> ---- Aalok ha respondido a esta pregunta, sólo estoy esperando a que se lo escriba para que yo pueda elegir que a medida que la respuesta correcta. Hasta entonces, junto con hacer los cambios que describe a continuación, tuve que llamar a - self.library = [[ALAssetsLibrary alloc] init]; - antes de cada intento de salvar mi imagen. Como medida de precaución que también se detuvo la AVSession corriendo hasta después de los puños cuando es fue reiniciado (usando [sesión de stopRunning], y [sesión de startRunning]; ----- <> <>imágenes IOS5 de ahorro a carpeta personalizada, ALAssetsLibrary fallan

<> < .> ----- EDIT 2: no es necesario detener y reiniciar la sesión AV, probado esto a fondo y está funcionando perfectamente ----- <> <>

<> <> - --- EDIT 3: después de probar esto en mi dispositivo a fondo, y funciona perfectamente, el código es no funciona una vez que ha pasado por el proceso de revisión y puesto en la tienda. Dos dispositivos idénticos (2x iPhone 4) que ejecutan el mismo sistema operativo, uno que usa mi build de desarrollo, uno fuera de la aplicación sotre, la versión ap store todavía tiene el error. Dando con esto por ahora ----- <> <>

estoy usando la categoría en este enlace para intentar salvar a una carpeta personalizada:

http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/

ahora funciona algunas veces, pero no todas. En los comentarios se ha sugerido que el siguiente código detectará si las propiedades del grupo son nulas:

if ([group valueForProperty:ALAssetsGroupPropertyURL] == nil) 
{ 
NSLog(@”group properties are nil!”); 
} else { 
[group addAsset:asset]; 
} 

la que tengo, y lo hace detectar si las propiedades son nulas. Así que todo bien. Lo que estoy luchando es en ese momento establecer las propiedades y guardar las imágenes. Supongo que en este momento podemos establecer manualmente el nombre del álbum y guardar la imagen, lo cual he intentado, pero el error aún ocurre.

¿Alguna idea? Gracias.

+2

Esto está bien si se queda en la misma vista pero si Usted es navegar a otra vista a través de la navegación de inserción que debe tener para detener la sesión, de lo contrario le da error exactamente en el tercer momento de tomar la imagen y navegar a la siguiente vista y tratar de guardar la imagen –

+0

OK, gracias por eso. En mi aplicación, elimino cualquier posibilidad de hacer algo mientras esto ocurre, así que no hay problema, pero en una versión futura lo tendré en cuenta. – mrEmpty

Respuesta

4

Tengo el mismo problema con este mismo archivo .h y .m pero encuentro una solución para esto después de trabajar en él durante 2 o 3 días y la solución es muy simple. Tengo que cambiarla.m archivo en

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

y en

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

métodos i sólo tiene que añadir esto antes de llamar a los métodos dentro

//THE CHANGE dispatch_async(dispatch_get_main_queue(),^{ // 
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL* assetURL, NSError* error) 
    { 
     //error handling 
     if (error!=nil) 
     { 
      completionBlock(error); 
      return; 
     } 
     //add the asset to the custom photo album 
     [self addAssetURL: assetURL toAlbum:albumName withCompletionBlock:completionBlock]; 
    }]; 
//THE CHANGE }); // 

y lo mismo para el otro

Happy Coding :)

EDITAR

En segundo método que añadir una línea debajo de cada línea de completionBlock(nil);

[[NSNotificationCenter defaultCenter] postNotificationName:kSaveSuccess object:nil]; 

Y utilizar esta notificación para asegurarse de que la imagen se guarda en el disco también. Hasta ese momento, muestro UIActivityIndicator con un mensaje de texto y después de que la imagen se haya guardado correctamente, se muestra un mensaje emergente que indica que la imagen se guardó en el álbum con el nombre del álbum. Y aunque esta vez la interfaz de usuario no responde es decir, el usuario no puede hacer cualquier cosa otro entonces presionando el botón de inicio del dispositivo :);)

feliz :) Codificación

+1

Si hay algún problema, hágamelo saber, ya que esto resuelve el problema descrito para mí :) –

+2

En la segunda función, ¿su cambio va por encima o por debajo del __bloque BOOL albumWasFound = NO; ¿línea? No estoy en casa hasta muy tarde esta noche para probar esto. Gracias por publicar :) – mrEmpty

+0

debajo de la línea __block BOOL .... YWC, me encanta ayudarte. :) –

Cuestiones relacionadas