1.NSSearchPathForDirectories:InDomains:方法需要解釋下,其聲明如下: ? ?
FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);
該方法用于返回指定范圍內(nèi)的指定名稱的目錄的路徑集合。有三個參數(shù):directoryNSSearchPathDirectory類型的enum值,表明我們要搜索的目錄名稱,比如這里用NSDocumentDirectory表明我們要搜索的是Documents目錄。如果我們將其換成NSCachesDirectory就表示我們搜索的是Library/Caches目錄。domainMaskNSSearchPathDomainMask類型的enum值,指定搜索范圍,這里的NSUserDomainMask表示搜索的范圍限制于當(dāng)前應(yīng)用的沙盒目錄。還可以寫成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等。expandTildeBOOL值,表示是否展開波浪線~。我們知道在iOS中~的全寫形式是/User/userName,該值為YES即表示寫成全寫形式,為NO就表示直接寫成“~”。
NSSearchPathDomainMask? ? NSUserDomainMask是指/user//目錄,NSLocalDomainMask,官方文檔說是Local to the current machine—the place to install items available to everyone on this machine.還是不太好理解,應(yīng)該就是跟NSUserDomainMask相對的一個概念,NSUserDomainMask是針對當(dāng)前用戶的,而NSLocalDomainMask是針對所有用戶的,比如Library目錄,如果是針對用戶的,就是/user//Library,而對所有用戶的就是/Library。
NSNetworkDomainMaskt是指/Network目錄下的文件夾。
NSSystemDomainMask是系統(tǒng)目錄,現(xiàn)在的Mac在/System目錄下只有一個Library目錄,這個目錄下包含了系統(tǒng)運行的程序和文件。并且所有的SystemDomain的文件夾都是只讀的。
其實這個enum定義的是domain的概念,不能簡單的理解為某個文件夾下的文件,比如NSSystemDomainMask中的Application目錄是/Applications,Document目錄是/System/Library/Documentation,其實這就沒什么意義,因為這個文件夾根本不存在。
2.Myapp.app ?[[NSBundle mainBundle] bundlePath]?
3.NSTemporaryDirectory() // ? ?~/tmp/
4.NSHomeDirectory() //doucement根目錄(其下包含document、library、tmp)
5.[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; ?//同上
注意2和4、5的區(qū)別:分別輸出一下,自行比對
2:/Users/jiuxiaoming/Library/Developer/CoreSimulator/Devices/D046A800-26C8-4ACB-8884-BFF0AB19FD37/data/Containers/Bundle/Application/80DD0709-A2D0-47F2-8E47-978806C3C110/Day1CoreData.app
5:/Users/jiuxiaoming/Library/Developer/CoreSimulator/Devices/D046A800-26C8-4ACB-8884-BFF0AB19FD37/data/Containers/Data/Application/6AAAB6A9-35C2-4FE4-8BE8-1DB38ADE8662/Documents