Domanda

Attualmente sto usando un codice abbastanza standard per le attività di enumerare in un gruppo. Tranne che ora ho un nuovo errore

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 46 beyond bounds [0 .. 45]'

Ecco il codice che sto usando.

 [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
            NSLog(@"Asset %@", result);
            if (result != nil)
            {
                Asset *asset = [provider newAsset];
                asset.date = [result valueForProperty:ALAssetPropertyDate];
                id duration = [result valueForProperty:ALAssetPropertyDuration];
                asset.duration =  [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%@", duration]];
                CLLocation *location = [result valueForProperty:ALAssetPropertyLocation];
                asset.location = [location description];
                asset.orientation = [result valueForProperty:ALAssetPropertyOrientation];
                asset.type = [result valueForProperty:ALAssetPropertyType];
                NSDictionary *urls = [result valueForProperty:ALAssetPropertyURLs];
                for (NSString * key in urls) {
                    NSLog(@"Url = %@",[urls objectForKey:key]);
                    asset.url = [NSString stringWithFormat:@"%@", [urls objectForKey:key]];
                }

                [assetGroup addAssetsObject:asset];

                [asset release]; // Corrected based on comments

            }
        }];

L'oggetto provider è il mio fornitore di database personalizzato. Ma l'eliminazione di questo codice non fa bene. la parte superiore NSLog non viene licenziato, che mi dice che il codice di enumerazione sta avendo un problema al di fuori del mio controllo. Qualcun altro ha sperimentato questo?

È stato utile?

Soluzione 3

Qualcosa era apparentemente incasinato con la mia libreria di foto. Dopo aver eliminato le mie foto e eseguire nuovamente l'applicazione, non sono più ottenere questo problema.

Certo piacerebbe sapere qual è il problema reale era e perché l'AssetsLibrary provato a enumerare oltre i limiti.

Altri suggerimenti

Questo bug può essere aggirato impostando i filtri per le foto, poi video, e l'enumerazione per ciascuno di essi, a sua volta, invece di tenerla al default 'attivi'.

ho postato i dettagli qui: ALAssetsLibrary sembra tornare numero errato delle mie foto

sto vedendo lo stesso problema. Si tratta di un bug da parte di Apple.

Si esegue il blocco di enumerazione in un thread separato e crash di andare fuori dai limiti. Che peccato! Non riesco a trovare un modo per catturare anche questo. App si blocca, e non c'è niente che puoi fare fino a quando la loro biblioteca si fissa.

Modifica della Rullino o, talvolta, il lancio di iPhoto per iPad consente di risolvere il problema, ma tornerà. Per fortuna, non accade troppo spesso, ma Apple deve reagire a questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top