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