Jon*_*ert 0 arrays objective-c ios
我最近开始自学Obj-c并开展了一个大型项目,以便在他们出现时学习语言的原理.我正在用14块瓷砖板制作游戏.现在放置这些我觉得最好将每个瓷砖的坐标放在.plist中,访问此信息然后返回每个坐标.所以plist看起来像这样:
root --->船上的位置--->项目0 ---> TileX(数字(4)),Tile y(数字(12))--->项目1 ......等.最多13个.
现在在代码我有这个
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"WheelData.plist"];
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath];
NSArray *positionOnBoard = [NSArray arrayWithArray:[plistData objectForKey:@"Position On Board"]];
int numberOfPositions = [positionOnBoard count];
NSMutableArray *PositionX;
NSMutableArray *PositionY;
NSMutableArray *arrayOfPositionsX = [[NSMutableArray alloc] initWithCapacity:numberOfPositions];
NSMutableArray *arrayOfPositionsY = [[NSMutableArray alloc] initWithCapacity:numberOfPositions];
for (int d = 0; d < numberOfPositions; d++) {
[arrayOfPositionsX addObject:[[positionOnBoard objectAtIndex:d] objectForKey:@"Tile X"]];
[arrayOfPositionsY addObject:[[positionOnBoard objectAtIndex:d] objectForKey:@"Tile Y"]];
PositionX = [NSMutableArray arrayWithArray:arrayOfPositionsX];
PositionY = [NSMutableArray arrayWithArray:arrayOfPositionsY];
if (d == 0) {
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 1) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 2) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 3) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 4) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 5) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 6) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 7) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 8) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 9) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 10) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 11) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 12) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
}
}
return PositionX;
return PositionY;
Run Code Online (Sandbox Code Playgroud)
现在很明显,此刻我只是对此进行nslogging,因此我得到每个tile都返回其X值和Y值.我最终会将其绘制到某种CGRectMake网格上,然后使用图像在viewcontroller上显示它.正如我所说,我是新手,仍然在学习.有更简单的方法吗?更好的方法?我非常感谢您的反馈,谢谢!
小智 5
您只需在{10,10}格式的plist文件中添加一串位置即可.所以你的plist结构看起来像这样;
<plist version="1.0">
<array>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
<string>{10,10}</string>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)
然后,访问如下数据;
NSArray *positionsArray = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Page" ofType:@"plist"]];
Run Code Online (Sandbox Code Playgroud)
上面的数组将以NSString格式保存所有位置.您可以CGPoint从这些NSStrings 生成一个.您可以直接使用这些CGPoints来定位瓷砖,或者您甚至可以根据需要分离X和Y坐标.请在下面找到代码段;
int count = 0;
for(NSString *strPos in positionsArray)
{
count++;
CGPoint position = CGPointFromString(strPos);
NSLog(@"Position %d -> X:%f Y:%f",count,position.x,position.y);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |