Xamarin.iOS SQLite错误导致驱动器崩溃,但在模拟器

时间:2016-11-07 21:17:18

标签: ios sqlite xamarin.ios sqlite-net

因此,我们正在构建一个仅使用SQLite在本地存储数据的iOS应用程序。我一直在iOS模拟器上运行它并且运行得很好但是当我在物理iPad上运行它(与模拟器相同的操作系统版本)时会输出大量错误。

首先,我在尝试创建表时遇到错误(同样,这个错误没有出现在模拟器上,它在模拟器中创建表就好了)如下所示,它不会创建“查询“正确,因为它不添加任何属性,这些属性都是该类的公共成员:

抛出的一个例外是“找不到'phoneNumber'的获取方法”。在这个类的类定义中,每个属性都是公共的,并且具有{get; set;}已定义。如果phoneNumber属性被注释掉,则会在类中的下一个属性上抛出此错误,表示找不到该属性。

此外,在调试时,似乎在设备上调试时该类的公共成员是私有的(这可能是导致上述错误的原因)。看下面的图片,第一个是在模拟器上调试时,第二个是在物理iPad上调试:

有没有其他人在物理设备上遇到过SQLite库这么多问题?任何建议都会有所帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,如果其他人在这里看到我能够找出我的问题。因为我用来创建表的类在我的代码中的任何地方都没有被引用(这是我刚刚添加的新表),编译器正在从我的代码中删除它的定义所以当Sqlite创建它时,它没有找到任何东西,因此也没有找到错误。类似地,对于属性,我没有在我的代码中引用所有这些属性,因此它正在剥离它们。

用于创建sqlite表的每个类顶部的这一行修复了它,它告诉编译器保留类的所有部分:

[Foundation.Preserve( AllMembers = true ) ]
public class School
{
    [PrimaryKey, AutoIncrement]
    public int id{ get; set;}
    public string schoolName{ get; set;}
    public string schoolAcronym{ get; set;}
    public string schoolState{ get; set; }
}