Xamarin.iOS的PCL存储问题
我已经用Xamarin编写了我的应用程序,首先在Android上测试,然后在iOS上测试。在安卓系统上一切正常,而不是在iOS上。我的问题与Xamarin.iOS的PCL存储问题,ios,xamarin,storage,Ios,Xamarin,Storage,我已经用Xamarin编写了我的应用程序,首先在Android上测试,然后在iOS上测试。在安卓系统上一切正常,而不是在iOS上。我的问题与PCLStorage有关,读取文件内容时失败,因为GetFileAsync结果是null,而不是CheckExistsAsync结果 我的代码是: public static async Task loadMyFile(Func<bool, Task> result) { IFolder rootFolder = FileSystem.C
PCLStorage
有关,读取文件内容时失败,因为GetFileAsync
结果是null
,而不是CheckExistsAsync
结果
我的代码是:
public static async Task loadMyFile(Func<bool, Task> result) {
IFolder rootFolder = FileSystem.Current.LocalStorage;
await rootFolder.CheckExistsAsync("myfile.txt").ContinueWith(async (checkExistsTask) => {
if (checkExistsTask.Result == ExistenceCheckResult.FileExists) {
await rootFolder.GetFileAsync("myfile.txt").ContinueWith(async (getFileTask) => {
try
{
await getFileTask.Result.ReadAllTextAsync().ContinueWith(async (readTextTask) => {
try
{
if (!string.IsNullOrEmpty(readTextTask.Result))
{
doWork(readTextTask.Result);
await result(true);
return;
}
else
{
await result(false);
return;
}
}
catch (Exception e)
{
await result(false);
return;
}
});
}
catch (Exception e)
{
await result(false);
return;
}
});
} else {
await result(false);
return;
}
});
}
公共静态异步任务loadMyFile(Func结果){
IFolder rootFolder=FileSystem.Current.LocalStorage;
等待rootFolder.CheckExistsAsync(“myfile.txt”).ContinueWith(异步(checkExistsTask)=>{
if(checkExistsTask.Result==ExistenceCheckResult.FileExists){
等待rootFolder.GetFileAsync(“myfile.txt”).ContinueWith(异步(getFileTask)=>{
尝试
{
等待getFileTask.Result.ReadAllTextAsync().ContinueWith(异步(readTextTask)=>{
尝试
{
如果(!string.IsNullOrEmpty(readTextTask.Result))
{
doWork(readTextTask.Result);
等待结果(真);
返回;
}
其他的
{
等待结果(假);
返回;
}
}
捕获(例外e)
{
等待结果(假);
返回;
}
});
}
捕获(例外e)
{
等待结果(假);
返回;
}
});
}否则{
等待结果(假);
返回;
}
});
}
有什么想法吗?
谢谢。我不知道你在等待任务时为什么要在这里使用
ContinueWith
我可能会这样写代码:
public static async Task loadMyFile(Func<bool, Task> result)
{
IFolder rootFolder = FileSystem.Current.LocalStorage;
var exists = await rootFolder.CheckExistsAsync("myfile.txt");
if (exists == ExistenceCheckResult.FileExists)
{
var file = await rootFolder.GetFileAsync("myfile.txt");
try
{
var text = await file.ReadAllTextAsync();
if (!string.IsNullOrEmpty(text))
{
doWork(text);
await result(true);
return;
}
else
{
await result(false);
return;
}
}
catch (Exception e)
{
await result(false);
return;
}
} else {
await result(false);
return;
}
}
你是对的。现在没有连续的工作完美:)谢谢你的回拨,这对我来说很重要,还有另一个原因…非常感谢
public static async Task<bool> loadMyFile()
{
IFolder rootFolder = FileSystem.Current.LocalStorage;
var exists = await rootFolder.CheckExistsAsync("myfile.txt");
if (exists == ExistenceCheckResult.FileExists)
{
var file = await rootFolder.GetFileAsync("myfile.txt");
try
{
var text = await file.ReadAllTextAsync();
if (!string.IsNullOrEmpty(text))
{
doWork(text);
return true;
}
}
catch (Exception e)
{
}
}
return false;
}