IOS 6.x'te (özellikle şu anda 6.0.1) ALAssetsLibraryChangedNotification ile çalışıyorum ve sonuçlar elde ettiğim şeyin karşılığını alıyorum. Belgelerden anladıklarıma dayanarak, userinfo'mda yer almayı umuyoruz.ios 6.0.1 ALAssetsLibraryChangedNotification, neyin gönderileceğini anlamaya çalışıyorum
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(assetsLibraryDidChange:) name:ALAssetsLibraryChangedNotification object:_library];
benim fotoğraf kütüphanesine gider, test etmek ve bazı öğeleri silin, bazı öğeler eklemek için:
İşte etkinlik kaydı için benim kod.
İşte işleyicim.
- (void)assetsLibraryDidChange:(NSNotification *)note
{
NSDictionary* info = [note userInfo];
NSLog(@"assetsLibraryDidChange calling syncPhotoInfoFromAssets, userInfo %@", info);
// If the user information dictionary is nil, reload all assets and asset groups.
if(note.userInfo==nil) {
[self syncPhotoInfoFromAssets];
return;
}
// If the user information dictionary an empty dictionary, there is no need to reload assets and asset groups.
if(note.userInfo.count == 0) {
return;
}
// If the user information dictionary is not empty, reload the effected assets and asset groups. For the keys used, see “Notification Keys.”
NSSet *updatedAssets = [info objectForKey:ALAssetLibraryUpdatedAssetsKey];
NSSet *updatedAssetGroup = [info objectForKey:ALAssetLibraryUpdatedAssetGroupsKey];
NSSet *deletedAssetGroup = [info objectForKey:ALAssetLibraryDeletedAssetGroupsKey];
NSSet *insertedAssetGroup = [info objectForKey:ALAssetLibraryInsertedAssetGroupsKey];
NSLog(@"updated assets:%@", updatedAssets);
NSLog(@"updated asset group:%@", updatedAssetGroup);
NSLog(@"deleted asset group:%@", deletedAssetGroup);
NSLog(@"inserted asset group:%@", insertedAssetGroup);
//further processing here
}
benim çıkışı: sildikten sonra
ALAssetLibraryUpdatedAssetGroupsKey = "{(\n assets-library://group/?id=736B6346-6DA2-4E43-8830-9C263B2D29ED\n)}";
ALAssetLibraryUpdatedAssetsKey = "{(\n assets-library://asset/asset.JPG?id=A695208B-3546-4CCA-B539-B1D132A209B3&ext=JPG\n)}";
}
2013-01-06 22:50:45.738 Olesi[25468:3613] updated assets:{(
assets-library://asset/asset.JPG?id=A695208B-3546-4CCA-B539-B1D132A209B3&ext=JPG
)}
2013-01-06 22:50:45.738 Olesi[25468:3613] updated asset group:{(
assets-library://group/?id=736B6346-6DA2-4E43-8830-9C263B2D29ED
)}
2013-01-06 22:50:45.739 Olesi[25468:3613] deleted asset group:(null)
2013-01-06 22:51:06.658 Olesi[25468:3613] inserted asset group:(null)
ve bir albüm ekleyerek, i ALAssetLibraryDeletedAssetGroupsKey ve ALAssetLibraryInsertedAssetGroupsKey ve ALAssetLibraryUpdatedAsset * Key birinde hiçbir şey sütununa veri almış bekliyoruz. Herhangi bir fikir? Bu bildirimi dinleyen Apple's sample code numaralı anahtarın bile anahtarlardan yararlanmadığını, ancak belirli anahtardan bağımsız olarak tüm varlıkların yeniden numaralandırıldığını (bildirim bilgisine güvenmedikleri gibi kokuyor) dikkat edin
Teşekkür ederiz. Http://developer.apple.com/library/ios/#documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Notification_Keys okumada bir Etkilenen varlıklar için URL’lerin listesi. Sadece varlıkların bir listesi * değiştirildiklerinde * ve ekleme veya silme işlemlerinde yalnızca ilgili varlık * grupları * için bir bildirim alırız. Sadece bir grupla ilgileniyorum. –
Evet, belgelere göre: "ALAssets, ALAssetGroups içeren geçersiz kılma ile tanımlanır veya silinir." Bu çok talihsiz bir durumdur ve bir varlık eklendiyse veya kaldırılırsa, tüm grubu (ör. Kamera Rulosu) yeniden yüklemeniz gerekir. – akaru