XCODE从文件中读取文本会删除变量

时间:2014-10-18 00:49:19

标签: xcode file sprite-kit text-files

这是我见过的最奇怪的错误 我正在创建一个从文本文件中加载级别的迷宫游戏,但如果文件有三行以上,它似乎会随机改变我的大多数变量。我加载一个文本文件然后遍历这些行,并根据其字母在适当的位置创建一个对象 有什么建议吗?

文字档案:
TTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTT
TTTTTRPPGPPDTTTTT
TTTTTPTPTPTPTTTTT
TTTTTPPPWPPPTTTTT
TTTTTPTPPPTPTTTTT
TTTTTPPPTPPPTTTTT
TTTTTPTPPPTPTTTTT
TTTTTUPPPPPLTTTTT
TTTTTTTTPTTTTTTTT
TTTTTTTTBTTTTTTTT
TTTTTTTTPTTTTTTTT

NSString *path = [[NSBundle mainBundle] pathForResource:@"map2c" ofType:@"txt"];
NSString *contents = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:nil];
NSArray *lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\r\n"]];
int y  = 0;
for (NSString* line in lines) {

    NSString* ty = @"TBGWUDLRP";
    char *str = (char *)[line UTF8String];
    char *str2 = (char*)[ty UTF8String];
    grannyMoving = 2;
    int x = str2[0];
    char x2 = str2[1];
    char GrannyStr = str2[2];
    char wolfStr = str2[3];

    char UpStr = str2[4];
    char DownStr = str2[5];
    char leftStr = str2[6];
    char rightStr = str2[7];
    char PathStr = str2[8];
    y--;
    maxY = y;
    if (line.length) {
        maxI = line.length;
        for (int i = 0; i< line.length; i++) {                
 SKSpriteNode* tree = [SKSpriteNode spriteNodeWithImageNamed:@"tree3"];
            tree.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(31, 31)];
            tree.physicsBody.affectedByGravity = false;
            tree.physicsBody.dynamic = NO;
            tree.position = CGPointMake(64*i+20, 64*y+800);
            tree.zPosition = -1* tree.position.y;

1 个答案:

答案 0 :(得分:0)

来自documentation

  

此C字符串是指向字符串对象内部结构的指针,   它的寿命可能比字符串对象短,并且会   肯定没有更长的寿命。因此,您应该复制C   如果需要将字符串存储在其中的内存上下文之外   你使用这个属性。

要修复此问题,您必须复制UTF8String返回的字符。 This answer提供了两种解决方案。