我正在ios8中实现扩展。在此import
函数中返回一个url。我需要从中读取数据并保存在我的应用程序中。
这是代码。
NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init];
NSError *error;
__block NSData *data;
[fileCoordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {
data = [NSData dataWithContentsOfURL:newURL];
//saving in document directory
}];
我的问题是,如果文件太大,dataWithContentsOfURL
会因内存不足而导致崩溃。
我想要一种方法从部分读取数据,保存在我的文档中,然后阅读下一部分并继续追加。因此它不会有记忆问题。
有人可以提供帮助。
答案 0 :(得分:0)
找到两个解决方案。
1-使用NSURLConnection。使用 $newPortfolio = $portfolio->create(
array(
"first_name" => $request->input('first_name'),
));
$tags = $request->input('tags');
$newPortfolio->tags()->attach($tags);
在文件中写入数据。
NSFileHandle
而不是在数据中转换然后保存。用于复制文件。
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data1{
// [data appendData:data1];
[self.currentFileHandle seekToEndOfFile];
[self.currentFileHandle writeData:data1];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self.currentFileHandle closeFile];
self.currentFileHandle = nil;
}
[fileCoordinator coordinateReadingItemAtURL:url options:NSFileCoordinatorReadingWithoutChanges错误:nil byAccessor:^(NSURL * newURL){
NSFileManager * fileManager = [[NSFileManager alloc] init];
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
BOOL success = [fileManager copyItemAtURL:url toURL:urlDestination error:& error]; if(success){ } }];
我使用了第二种解决方案。抱歉错误对齐。我尝试了很多,但没有 来得好。