0
我正在寫一個iOS加載程序,用於加載來自plist的數據,以便通過OpenGL將頂點數據等發送到GPU。我可以很容易地提取標準類型的對象,如字符串,整數等。從plist中提取未知數據
當我遇到看起來像是一個字典對象的原始數據時,我被困住了。 plist是我的3D建模軟件保存的原生文件,我不是作者,所以我不知道數據是如何寫入這個對象的。
我對這個對象有些瞭解,它可能是浮點數組,每個頂點需要X,Y和Z的浮點值,下面的例子中有26個頂點。
下面是plist文件的實際數據對象:
<key>vertex</key>
<data>
AAAAAL8AAAAAAAAAAAAAAAAAAAC/AAAAPwAAAAAAAAA+gAAAvwAA
AD7ds9cAAAAAPt2z2L8AAAA+f///AAAAAD8AAAC/AAAAsru9LgAA
AAA+3bPXvwAAAL6AAAEAAAAAPoAAAb8AAAC+3bPXAAAAALM7vS6/
AAAAvwAAAAAAAAC+gAADvwAAAL7ds9UAAAAAvt2z2L8AAAC+f//9
AAAAAL8AAAC/AAAAMczeLgAAAAC+3bPYvwAAAD5///0AAAAAvn//
+L8AAAA+3bPaAAAAAD6AAAA/AAAAPt2z1wAAAAAAAAAAPwAAAD8A
AAAAAAAAAAAAAD8AAAAAAAAAAAAAAD7ds9g/AAAAPn///wAAAAA/
AAAAPwAAALK7vS4AAAAAPt2z1z8AAAC+gAABAAAAAD6AAAE/AAAA
vt2z1wAAAACzO70uPwAAAL8AAAAAAAAAvoAAAz8AAAC+3bPVAAAA
AL7ds9g/AAAAvn///QAAAAC/AAAAPwAAADHM3i4AAAAAvt2z2D8A
AAA+f//9AAAAAL5///g/AAAAPt2z2gAAAAA=
</data>
關於如何閱讀這個任何想法?這裏是我的地方:
// get plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"Cylinder" ofType:@"jas"];
NSDictionary *cheetahFile = [NSDictionary dictionaryWithContentsOfFile:path];
NSArray *objectArray = [cheetahFile objectForKey:@"Objects"];
NSDictionary *model = [objectArray objectAtIndex:1];
//get vertex count
GLshort vertCount = [[model valueForKey:@"vertexcount"] intValue];
//All good so far...but...
//get vertex data?... this doesn't work:
NSMutableArray *vertArray = [NSMutableArray arrayWithObject:[model objectForKey:@"vertex"]];
P.S.如果我正在犯新秀錯誤,請提前抱歉。我是專業設計師,而不是程序員。所以,當我吃蠟筆的時候,用柔和的色調說慢話。 :)
謝謝,這是更接近。是的,如何處理它......這是真正的問題。 – 2013-05-13 23:04:03
'NSData'只是一個字節流。它可能是任何東西。您需要了解字節是如何創建的以及它們代表的是什麼。 – rmaddy 2013-05-13 23:06:56
它確實需要是一個浮點數組,在這種情況下其他的東西是沒有意義的。 – 2013-05-13 23:10:31