У меня есть приложение с услугами определения местоположения ENABLED (из настроек и т.д.), и я читаю все фотографии с моего устройства с помощью ALAssetsLibrary.
Он отлично работает на iPhone4 iOS 4.2.1, но тот же код и те же активы DONT WORK на любых 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: < nan, nan > +/- 0.00m (скорость -1.00 mps/course -1.00) @2011-02-19 01:20:35 +0000
(Обратите внимание, что дата недействительного местоположения - текущее время)
Я получаю CLLocation следующим образом:
CLLocation* location = [asset valueForProperty:ALAssetPropertyLocation];
CLLocationCoordinate2D coord = [location coordinate];
if ( !CLLocationCoordinate2DIsValid(coord) ) return;
Код ALAssetsLibrary, вызываемый в моем диспетчере представлений 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), обычно это никогда не...