1. 程式人生 > >NSUserDefaults 儲存可變陣列問題

NSUserDefaults 儲存可變陣列問題

廢話不多說上程式碼,專案中遇到的問題是:

NSMutableArray * arrayLoginNames = [NSMutableArray array];

arrayLoginNames  = [[NSUserDefaults standardUserDefaults] mutableArrayValueForKey:KLastLoginNameForAutoSendMsgToKeFu];

這句話取出了陣列,可是當對陣列新增元素後,進行儲存時卡在了下面這句話:

[[NSUserDefaults standardUserDefaults] setObject:arrayLoginNames forKey:KLastLoginNameForAutoSendMsgToKeFu];

把主執行緒卡主,但是不崩潰,不知道為何,就Google了,stackoverflow給瞭解答辦法,

When you store mutable objects to NSUserDefaults, it stores an immutable copy of it so you can't change it directly like that. You have to get the mutable copy out of defaults, change it, and then set it back, replacing old object in defaults.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableArray *mutableArrayCopy = [[prefs objectForKey:@"theArray"] mutableCopy];
[mutableArrayCopy addObject:@"some new value"];
[prefs setObject:mutableArrayCopy forKey:@"theArray"];

[[NSUserDefaults standardUserDefaults] synchronize];

相關推薦

NSUserDefaults 儲存可變陣列,物件。

NSUserDefaults :是資料持久化的一種方式,用途比較廣泛。 如何用它儲存物件呢?物件是不能直接儲存的,但是NSUserDefaults可以儲存NSData型別的資料,所以要儲存物件需要先把物件轉化成NSData型別資料。NSData *data = [NSKey

NSUserDefaults 儲存可變陣列問題

廢話不多說上程式碼,專案中遇到的問題是: NSMutableArray * arrayLoginNames = [NSMutableArray array]; arrayLoginNames  = [[NSUserDefaults standardUserDefaults] mutableArrayValu

簡單知識點例項之一:如何將各個單一獲取的資料儲存陣列物件並將其取出

一、將獲取的值存為陣列或陣列物件 (1)存為陣列(例如所有怪物的id值可以存為陣列) 是以逗號隔開的,建議用到存單個特定值時用(如光存id值時) <!DOCTYPE html> <html lang="en"> <head> <

java學習實驗隨筆-------如何從鍵盤輸入資料並儲存陣列

從鍵盤輸入並儲存 public static void main(String[] args) {  Scanner reader = new Scanner(System.in);       /使用Scanner庫進行輸入操作 int[] a = ne

C語言 十進位制轉二進位制,並儲存陣列

#include <stdio.h> #define uint unsigned int #define ushort unsigned short uint transform_data(uint frequence,ushort* pwm_table) { uint temp

知識點:可變陣列的屬性使用copy修飾的後果

問題 視訊What's New in LLVM 中,從12:05的時間開始有個關於NSMutableArray可變陣列屬性的使用問題。 執行後報錯圖如下: 分析 self.photos的實際型別是 __NSMutable0,也就NSArray型別。沒有addObject的方法。 進一步探討

JQuery 同時獲取多個標籤的指定內容並儲存陣列

文章來自:原始碼線上https://www.shengli.me/jquery/271.html       此時的list1的陣列中   每個元素已經不是'li'物件,如此執行控制檯會報錯: &nbs

Scala可變陣列與不可變陣列的區別、可變集合與不可變集合的區別、Array與ArrayBuffer的區別、List與ListBuffer的區別

不可變陣列與可變陣列的區別 Array與ArrayBuffer的區別 Array為不可變陣列,ArrayBuffer為可變陣列,兩則的區別比較好理解: 不可變指的是長度不可變。Array不能新增或刪除元素,沒有+=和-=方法;而ArrayBuffer可以新增或刪除元素。 注意點:Ar

C99 可變陣列LVA

C90及C++的陣列物件定義是靜態聯編的,在編譯期就必須給定物件的完整資訊。但在程式設計過程中,我們常常遇到需要根據上下文環境來定義陣列的情況,在執行期才能確知陣列的長度。對於這種情況,C90及C++沒有什麼很好的辦法去解決(STL的方法除外),只能在堆中建立一個記憶體映像與需求陣列一樣的替

Scala 可變陣列 ArrayBuffer

scala> scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer scala> val numbers = new

Scala 可變陣列與不可變陣列

(*)陣列 java中的集合都是可變集合 在scala中集合分為可變集合和不可變集合 不可變陣列預設可以使用 長度不可以改變,內容可以改變 可變陣列必須引用:import scala.collection.mutable.ArrayBuffer

Java線性表(順序儲存)——陣列實現

第一次寫部落格,最近一直在研究資料結構,最開始準備用c語言寫資料資料結構的東西的,發現用c真的寫得我頭痛,果斷用了我喜歡的java實現,其實懂了過後用什麼語言寫都一樣的。不說了,直接上程式碼! 1.定義介面 抽象資料型別的List介面 public interface

請教picturebox截圖儲存陣列並實現截圖拖動組合的問題

VS2017從元資料無註釋!AutodeskRevit二次開發VS2017從元資料無註釋!AutodeskRevit二次開發 net4.5選單BUGwinform製作列印net4.5選單BUGwinform製作列印 父窗體BindingNavigator導航按鈕如何操作當前活

Oracle 儲存過程 陣列

Oracle儲存過程 一維陣列 二維陣列 (範例) /* 在PL/SQL中是沒有陣列(Array)概念的。但是如果程式設計師想用Array的話,就得變通一下,用TYPE 和Table of Record來代替多維陣列,一樣挺好用的。 emp_type 就好象一個table 中的一條recor

Java中棧的實現(1)-使用順序儲存結構(陣列)以及實現

棧和佇列其實是與普通的線性發展而來的,為普通的線性表增加一些特殊的限制就可以得到棧和隊列了。從功能上看,棧和佇列比普通的線性表功能相對弱一點,但是在特殊的場合下,使用棧和佇列更有利,例如,編譯器在實現函式的呼叫的時候需要使用棧來儲存斷點,實現遞迴演算法時候也需要用棧來儲存。

在mongodb中儲存numpy陣列

原文連結:https://cloud.tencent.com/developer/ask/32026 對於一維numpy陣列,可以使用列表: # serialize 1D array x record['feature1'] = x.tolist() # deserialize 1D ar

Oracle複合型別 ORACLE 集合 變長陣列(可變陣列 varray) 關聯陣列 聯合陣列(索引表)巢狀表 記錄型別的巢狀表

ORACLE 集合(關聯陣列,巢狀表,VARRAY) 2014年10月25日 19:27:22 vampireslove 閱讀數:835 標籤: plsql 更多 個人分類: ORACLE 三種集合比較

iOS 可變陣列removeAllObjects引起崩潰

今天使用可變陣列的方法[_arrayClassAllOder removeAllObjects]; 程式居然崩潰了,找了好大一會兒,發現我在程式有個地方做了這個操作self.showDataSourc

js隨機產生x到y(例如:0-10)的隨機整數,儲存陣列

產生隨機數,是任何計算機語言必須有的基本功能; 因為我們的生活中充滿了各種隨機性; 所以程式設計過程中一定需要隨機某件事。 下面是用javascript 實現的隨機數,其中陣列元素重複的判斷Jquery 這個庫;(為什麼用Jquer

OC資料儲存本地(一)-----iOS----NSUserDefaults 儲存 清空

具體來說NSUserDefaults是iOS系統提供的一個單例類(iOS提供了若干個單例類),通過類方法standardUserDefaults可以獲取NSUserDefaults單例 常見到的輕量