gpt4 book ai didi

ios - 无法创建用于写入的文件 - iOS

转载 作者:行者123 更新时间:2023-11-28 18:23:34 30 4
gpt4 key购买 nike

所以我编码了一堆用于写入的对象,但我在文件管理方面遇到了麻烦。我似乎无法打开现有文件或创建新文件。

我试过创建一个同名的空文件,或者只是创建一个新文件。它似乎没有回应(或为此做任何事情)。

编辑 所以我听从了这里的一些建议,但现在我遇到了严重的访问崩溃问题。

这是我得到路径的地方:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
filePath = [documentsDirectory stringByAppendingPathComponent:@"/bucketListData.dat"];

这是修改后的方法。

    -(void) writeFile
{
NSData *encodedObject;
encodedObject = [NSKeyedArchiver archivedDataWithRootObject: bucketItems];
NSFileHandle *file;
file = [NSFileHandle fileHandleForReadingAtPath:filePath];

if(file == nil)
{
NSLog(@"Failed to open a file handle for writing. Attempting to create a file.");
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
file = [NSFileHandle fileHandleForReadingAtPath:filePath];
if(file == nil)
{
NSLog(@"Unable to create new file.");
}
}

[file writeData: encodedObject];
[file closeFile];
}

最佳答案

您没有写入 root 的权限,您只能访问您的沙箱,并且您正在创建一个只读句柄。试试这个方法:

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];   
NSString *filePath = [docDir stringByAppendingPathComponent:@"bucketListData.dat"];
NSFileHandle *file = [NSFileHandle fileHandleForWritingAtPath:filePath];

if (!file) {
NSLog(@"Attempting to create the file");
if (![[NSFileManager defaultManager] createFileAtPath:filePath
contents:nil
attributes:nil]) {
NSLog(@"Failed to create file");
}
else {
file = [NSFileHandle fileHandleForWritingAtPath:filePath];
}
}

NSLog(@"File handle: %@", file);

关于ios - 无法创建用于写入的文件 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15752417/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com