【问题标题】:Problem with saveToFilesaveToFile 的问题
【发布时间】:2010-05-29 08:38:16
【问题描述】:

我遇到了 NSData writeToFile 的问题。 我已经实现了下面的代码,但我有一个异常。 当我在模拟器上运行我的程序时,会创建新文件并存储信息;当我在我的设备中构建应用程序时,不会创建该文件。 调试不会给我任何错误,但不会保存任何东西。 你能帮助我吗? 非常感谢,对不起我的英语。

-(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{

    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
    [archiver encodeFloat:x forKey:@"x"];
    [archiver encodeFloat:y forKey:@"y"];
    [archiver encodeFloat:z forKey:@"z"];
    [archiver encodeObject:name forKey:@"name"];
    [archiver finishEncoding];
    BOOL result = [data writeToFile:@"XML Position" atomically:YES];
    if(result)
        [self   updateTextView:@"success"];
    [archiver release];

}

【问题讨论】:

    标签: iphone objective-c file


    【解决方案1】:

    您无法写入 iPhone 中的当前工作目录,因为您在沙盒中运行。此外,您应该检查result 的值。如果它曾经是NO,那么您的写入失败。相反,您必须找到文档目录并将文件写入那里:

    -(void)saveXML:(NSString*)name:(float)x:(float)y:(float)z{
    
        NSMutableData *data = [NSMutableData data];
        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
        [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
        [archiver encodeFloat:x forKey:@"x"];
        [archiver encodeFloat:y forKey:@"y"];
        [archiver encodeFloat:z forKey:@"z"];
        [archiver encodeObject:name forKey:@"name"];
        [archiver finishEncoding];
        NSString* filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"XML Position"];
        BOOL result = [data writeToFile:filePath atomically:YES];
        if(result)
            [self   updateTextView:@"success"];
        [archiver release];
    
    }
    

    【讨论】:

    • 完全同意。这就是 zp26 所需要的。
    • 我将它存储在我的 iPhone 哪里?
    【解决方案2】:

    只需使用 NSSearchPathForDirectoriesInDomains 并将您的文件写入此返回的路径即可。您无需担心设备或模拟器。

    【讨论】:

    • 我可以试试这些,但我找不到文件。不要在我的电脑和 iPhone 中找到。
    • 使用 NSLog(@"zp26 %@",filePath);就在 NSString *filePath=....... 行之后,你可以在你的电脑中看到文件的路径
    • 我认为是 zp26 ,现在你已经成功在你的电脑中找到文件了???一切顺利
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2015-06-02
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多