2012-08-15 62 views
0

我有9x9矩陣數組如下。我想將它作爲遊戲參數存儲在我的i​​Phone應用程序中。是否有可能將二維數組存儲在info.plist中

int str2Darray[9][9] = { 

    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 
    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 
    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 
     {1, 1, 1, 1, 1, 1, 1, 1, 1}, 
     {1, 1, 1, 1, 0, 1, 1, 1, 1}, 
     {1, 1, 1, 1, 1, 1, 1, 1, 1}, 
    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 
    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 
    {-1, -1, -1, 1, 1, 1, -1, -1, -1}, 

}; 

是否可以將上述數組存儲在.plist文件中?如果有的話,請提出任何其他方式。

回答

1

你當然不想將它存儲在你的Info.plist中。正如已經說過的那樣,這是關於你的應用程序的信息,而不是數據存儲。而是在您的應用程序資源中放入一個單獨的文件並將數據保存在那裏。

您可以將您的數據轉換成的二維數組NSArrays並將NSArray寫入一個單獨的plist文件,但這是一個很大的開銷。相反,如果您已經知道數組的大小始終爲9x9,我建議將該數組傳遞給NSData對象並將其保存到文件中。

NSData *arrayData = [NSData dataWithBytes:str2Darray length:sizeof(int)*9*9]; 
[arrayData writeToFile:dataPath atomically:YES]; 

如果這個數組代表你的遊戲在任何一點的狀態,並要保存它,所以,當他返回到您的應用程序,用戶可以繼續,那麼你應該將其保存到您的文檔文件夾中。

NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES); 
NSString *dataPath = [docPath stringByAppendingPathComponent:@"MyArrayData.txt"]; 

如果代表級別的數據,或者要與你的遊戲你的船比賽開始配置,那麼我建議開始臨時簡單的第二個項目。執行一次,抓取保存的文件並將其放入您的項目資源中。

然後,您可以在此路徑訪問它:

NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"MyArrayData" ofType:@"txt"]; 
int length = sizeof(int)*9*9; 
str2DArray = (int *)malloc(length); // Assuming str2Darray is an ivar or already defined. 
NSData *arrayData = [NSData dataWithContentsOfFile:dataPath]; 
[arrayData getBytes:&str2Darray length:length]; 
+0

您省略更難猜測有點...獲取數據了。 '[data getBytes:&str2Darray length:data.length];' – 2012-08-15 13:53:52

+0

對,我忘記了,謝謝。我更新了我的帖子。 – DrummerB 2012-08-15 13:58:49

+0

這真的很有用..謝謝 – Dhaval 2014-02-15 06:41:16

相關問題