簡體   English   中英

可以在iPhone上使用NSUserDefaults保存整數數組嗎?

[英]Possible to save an integer array using NSUserDefaults on iPhone?

是否可以在iPhone上使用NSUserDefaults保存整數數組? 我在我的.h文件中聲明了一個數組: int playfield[9][11] ,它從文件中填充整數並確定游戲場地的布局。 我希望能夠有幾個保存位置,用戶可以保存他們的游戲。 如果我做:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject: playfield forKey: @"slot1Save"];

我收到指針錯誤。 如果可以保存整數數組,那么最好的方法是什么,然后再檢索它?

提前致謝!

您可以使用NSData包裝器保存和檢索數組

即(沒有錯誤處理)

保存

NSData *data = [NSData dataWithBytes:&playfield length:sizeof(playfield)];
[prefs setObject:data forKey:@"slot1Save"];

加載

NSData *data = [prefs objectForKey:@"slot1Save"];
memcpy(&playfield, data.bytes, data.length);

來自Apple的NSUserDefaults文檔

默認值必須是屬性列表,即(或集合的實例組合)的實例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。

這就是你得到指針錯誤的原因。

您有多種選擇(按推薦用法排序):

  1. 使用NSArrayNSArrayplayField存儲在您的應用程序中
  2. 將playField保持為int數組,但在保存到NSUserDefaults之前用NSArray填充數字。
  3. 編寫自己的NSArchiver子類,以在整數數組和NSData之間進行轉換。

你必須將它轉換為一個對象。 您可以使用NSArray或NSDictionary。

只需使用NSArray而不是普通的C數組,它就可以輕松解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM