У меня есть приложение с включенными службами определения местоположения (из настроек и т. Д.), И я читаю все фотографии с моего устройства, используя ALAssetsLibrary.
Оно отлично работает на iPhone4 iOS 4.2.1, нотот же код и те же ресурсы НЕ РАБОТАЮТ на любых 3gs любой iOS (от 4.0 до 4.2.1).
Проблема в том, что он всегда получает недопустимый CLLocation на 3gs.
Дажена одном и том же изображении (скопированном на оба устройства) на iPhone4 возвращается действительное CLLocation, на 3gs - недействительное!Изображение самого изображения действительно на обоих устройствах, только CLLocation является недействительным.У меня нет сбоев, и код не переходит в какие-либо недопустимые блоки, все отлично работает, кроме недопустимых данных CLLocation.
Вывод того же актива и того же кода и та же версия iOS (4.2.1):
iPhone4 : <+51.23816667, -0,57700000> +/- 0,00 м (скорость -1,00 м / с /курс -1.00) @ 19.02.2011 01:59:28 Среднее время по Гринвичу
3gs : +/- 0.00m (скорость -1.00 mps / курс -1.00) @ 2011-02-19 01:20:35 + 0000
(обратите внимание, что дата в недопустимом местоположении является текущим временем)
Я получаю CLLocation следующим образом:
CLLocation* location = [asset valueForProperty:ALAssetPropertyLocation];
CLLocationCoordinate2D coord = [location coordinate];
if ( !CLLocationCoordinate2DIsValid(coord) ) return;
Код ALAssetsLibrary, вызываемый в моем viewcontroller DidLoad, выглядит следующим образом (полностью стандартно):
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL)
{
[self myFunction:result withIndex:index];
}
};
void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil)
{
numberOfAssets = [group numberOfAssets];
[group enumerateAssetsUsingBlock:assetEnumerator];
}
};
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Oh no!");
}];
И последнее: в приложении для родных фотографий изображения отображаются в правильном месте на3gs, поэтому они должны где-то иметь эти данные, просто они как-то не читают!
Я не совсем уверен, что это проблема устройства (3gs)обычно это никогда не бывает ...