plist涉及到沙盒的乙個問題

2021-06-09 20:30:23 字數 1573 閱讀 1830

plist涉及到沙盒的乙個問題

儲存玩家資料,模擬器讀寫都可以,而真機plist檔案只能讀不能寫,十分頭大,弄球一天找到了問題所在。

按照網上比較有說服力的說法是:ios程式執行的時候是在「沙盒」裡執行。而沙盒裡的資料不能寫入,只能讀取。

nsbundle *bundle = [ nsbundle mainbundle ];

nsstring *filepath = [ bundle pathforresource:@"cfg" oftype:@"plist" ];

filepath列印出來的執行位址應該類似

nsarray *doc = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes); nsstring *docpath = [ doc objectatindex:0 ];

可以看到系統檔名id和上面的一樣。

nsarray *doc = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);

nsstring *docpath = [ doc objectatindex:0 ];

// ****************************** 寫入plist初始化資料(最後有,先說讀取)

讀取:nsarray *doc = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);

nsstring *docpath = [ doc objectatindex:0 ]; // 字典集合。  

nsstring *content = [ dic objectforkey:@"score" ];

nsarray *array = [ content componentsseparatedbystring:@","];

content裡就是「score」裡所儲存的資料,array是將content裡的資料按「,」拆分,僅將兩個「,」之間的資料儲存。

寫入:一定要注意,必須建立乙個新的nsmutabledictionary

// 用來覆蓋原始資料的新dic

nsmutabledictionary *newdic = [ [ nsmutabledictionary alloc ] init ];

// 新資料

nsstring *newscore = @"100,200,300";

// 將新的dic裡的「score」項裡的資料寫為「newscore」

[ newdic setvalue:newscore forkey:@"score" ];

// 將 newdic 儲存至docpath+「score.plist」檔案裡,也就是覆蓋原來的檔案

nsarray *doc = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);

nsstring *docpath = [ doc objectatindex:0 ];

discuz涉及到的問題

其中 設定創始人 config global.php 修改 config admincp founder 1,511314 其中門戶管理中同步登陸 在discuz panel修改 construct將tbl common admincp session表中的 errorcount置為 1 panel...

微信證書發布涉及到的問題

參考 這個問題被搞了好久,一直沒找到解決方式,網上解決方案倒是很多,但是之前找到的,嘗試過都不行,今天總算是給解決了 問題描述 system.security.cryptography.cryptographicexception 出現了內部錯誤。at system.security.cryptog...

技術應用涉及到的四個方面的問題

我發現一般的工程技術應用問題可以歸納為四個方面的問題 如何定義問題 如何解決問題 如何驗證問題已經得到了解決 如何優化解決問題的效率。下面我以乙個具體的例子來解釋這四個方面的問題。比如家電製造商的需求調查人員通過調查,發現使用者的需求是想吃上熱飯,於是就定義了乙個問題 通過製造什麼家電能夠滿足使用者...