从plist中提取未知数据

时间:2013-05-13 22:37:24

标签: ios objective-c plist

我正在编写一个iOS加载程序,它将来自打算通过OpenGL发送顶点数据等的plist的数据加载到GPU。我可以轻松地提取标准类型的对象,如字符串,整数等。

当我遇到看起来像是字典对象的原始数据时,我感到难过。 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。如果我犯了一个菜鸟错误,请提前抱歉。我是专业的设计师,而不是程序员。因此,当我吃蜡笔时,使用舒缓的音调说话很慢。 :)

1 个答案:

答案 0 :(得分:0)

<data>部分是编码的NSData对象。你可以这样做:

NSData *vertexData = model[@"vertex"];

您对该数据的处理是另一个完整的讨论。