2017-03-03 123 views
5

我正在使用Apples Photos Framework將PHAssetCollections加載到我的應用程序中。 我總是得到智能收藏的英文名稱。例如,我得到'收藏'而不是'收藏'(瑞典語)。我認爲localizedTitle屬性會返回模擬器或iPhone運行的語言。 (運行在瑞典語言和地區的iPhone上)。iOS PHAssetCollection localizedTitle總是返回英文名

有沒有其他人遇到過這個? 示例代碼:

NSArray *collectionsFetchResults; 
NSMutableArray *localizedTitles = [[NSMutableArray alloc] init]; 

PHFetchResult *smartAlbums = [PHAssetCollection  fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum 
                      subtype:PHAssetCollectionSubtypeAlbumRegular options:nil]; 
PHFetchResult *syncedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum 
                     subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:nil]; 
PHFetchResult *userCollections = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil]; 

// Add each PHFetchResult to the array 
collectionsFetchResults = @[smartAlbums, userCollections, syncedAlbums]; 

for (int i = 0; i < collectionsFetchResults.count; i ++) { 

    PHFetchResult *fetchResult = collectionsFetchResults[i]; 

    for (int x = 0; x < fetchResult.count; x ++) { 

     PHCollection *collection = fetchResult[x]; 
     localizedTitles[x] = collection.localizedTitle; 
     NSLog(@"%@", collection.localizedTitle); //<= Always prints english names 
    } 
} 

回答

4

爲什麼collection.localizedTitle不返回任何其他語言的原因是因爲您的應用只有一個本地化爲English。這絕對是一個蘋果Bug,但這裏有一個黑客按照這些步驟。

  1. 創建相關文件夾sv.lproj除了en.lproj文件夾,你已經有。
  2. 在該文件夾中添加一個空白文本文件,然後將該文件添加到您的項目中。
  3. 執行步驟2.您正在向您的項目添加瑞典語言支持。
  4. 運行您的代碼,它應該返回標題在瑞典語。

更新

如果你想添加空白文本後容易,你可以添加喜歡通過選擇項目在對方的回答表明,以增加更多的語言,並在本地化部分添加的語言並再次選擇空白文件,因爲我們不想本地化其他文件。

希望它有幫助,如果有疑問問這裏。

乾杯。

+0

謝謝。這很好用! –

0

你的問題可能是你沒有取的或明或暗地返回內置的收藏夾智能專輯。 (此外,它會幫助您診斷代碼,只檢查一次獲取的結果,因此您可以計算出哪一個包含非本地化的「收藏夾」。)

如果您明確希望收藏收藏,用PHAssetCollectionSubtypeSmartAlbumFavorites集合子類型搜索它。 (它不應該是搜索普通專輯或同步專輯的結果,我會很驚訝地看到它在頂級用戶集合中,因爲這被記錄爲僅返回用戶創建的集合。)

如果明確地請求「收藏夾」智能相冊返回非本地化版本,或者您的其他提取內容之一正在返回「收藏夾」智能相冊,但它不是本地化的,這可能是蘋果的一個錯誤 - 我推薦telling them about it

1

我認爲你應該確保你的應用程序支持瑞典語。 添加要支持瑞典例如 add Swedish language