2014-07-15 50 views
2

我一直在試圖創建一個Today擴展,需要訪問文檔目錄中的.plist文件。我已經爲應用程序和擴展程序設置了應用程序組。在今天的擴展中加載文件

雖然我看過NSUserDefaults的例子,但我找不到任何文件訪問。

我試圖訪問這樣的文件

let paths = NSSearchPathForDirectoriesInDomains(
     .DocumentDirectory, .UserDomainMask, true) 
let documentsDirectory = paths[0] as String 
let filePath = "\(documentsDirectory)/config.plist" 

if NSFileManager.defaultManager().fileExistsAtPath(filePath) // false 
{ 
… 
} 

(這在應用程序本身的工作),但我得到了以下錯誤消息在控制檯:

Warning: CFFIXED_USER_HOME is not set! It should be set to the simulated home directory. 
Failed to inherit CoreMedia permissions from 59919: (null) 

的文件說,一些有關使用NSFileCoordinatorNSFilePresenter。雖然我找不到如何使用它們。我確定我需要告訴他們應用程序組標識符,但我不在哪裏。

回答

1

我得到它的工作。由於我不需要從擴展名中寫入文件,所以我不認爲我需要使用NSFileCoordinator。原來NSFileManager有一個方法containerURLForSecurityApplicationGroupIdentifier()來檢索容器的URL。

let manager = NSFileManager() 
let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier("group.MyGroupIdentifier") 

let filePath = "\(containerURL.path)/config.plist" 
let settings = NSDictionary(contentsOfFile: filePath) 
+0

你試過這個設備是否鎖定?該文件是否仍然爲您加載?只要手機沒有鎖定,它就可以工作,但如果我有密碼,則沒有數據通過。看到這裏:http://stackoverflow.com/questions/25938178/load-file-in-today-extension-when-device-is-locked – ccwasden

+0

@ccwasden這裏沒有問題... – flo