2011-05-04 69 views
3

我試圖保存一個包含CGRect值的數組。我知道plists與CGRect類型不兼容,所以我略微修改了我的代碼,現在我正在存儲NSNumber而不是存儲rect值 - 我將rect值分爲四個值:x,y,width,height。將CGRect存入plist時出現問題

[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetMinX(rawRect)]]; 
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetMinY(rawRect)]]; 
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetWidth(rawRect)]]; 
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetHeight(rawRect)]]; 

現在myArray1只包含NSNumber S和我試圖將這些值存儲到一個plist中,但我不能加載值回。如果我對我的代碼做任何錯誤,任何人都可以糾正我嗎?

在此先感謝;我正在等待您的寶貴信息。

回答

16
CGRect rect = CGRectMake(0, 0, 320.0f, 480.0f); 
//you need to translate the rect into a compatible "Plist" object such as NSString 
//luckily, there is a method for that 

[rectArray addObject:NSStringFromRect(rect)]; 

//save into a plist 


... 

該值

CGRect rect = CGRectFromString([rectArray objectAtIndex:0]); 
+0

+1 thanks dude its working .. – ajay 2011-05-04 17:25:43

0

你給出的代碼檢索看起來是正確的。你的問題可能在其他地方。它可能在加載代碼或保存代碼中的其他位置,但是您還沒有發佈任何其他內容,所以我無法確定問題出在哪裏。

如果您爲簡單起見而喜歡,可以嘗試使用johnoodles方法,但這可能會創建更大的plist文件,並且還需要更長的時間來存儲和檢索。如果存儲的rects數量相對較少,這可能不是問題,但如果您存儲的數量很多,則可能會注意到如果存儲爲實際數字,則延遲會更短。