Android开发人员和iOS newb在这里。我有一个要迁移到iOS的应用程序。我正在同时学习Xcode和Swift,请保持温柔! :)
我的问题是我只想保存/检索一个如下所示的类(在Java中):
public class CardDeck implements Parcelable{
private ArrayList<Profile> cards;
private int location;
public CardDeck(){
this.cards = new ArrayList<>();
this.location = 0;
//this.numCards = 0;
}
public CardDeck(ArrayList<Profile> cards) {
this.cards = cards;
this.location = 0;
//this.numCards = cards.size();
}
protected CardDeck(Parcel in) {
cards = in.createTypedArrayList(Profile.CREATOR);
//numCards = in.readInt();
location = in.readInt();
}
}
我想保存/检索一个CardDeck对象,该对象包含一个配置文件数组。我的初步阅读使我认为您不能使用UserDefaults或NSCoding来执行此操作,因为plist文件不能包含诸如Profile之类的自定义数据类型。我说对了吗? UserDefaults适用于标准数据类型(bool,int,String等),NSCoding可以处理CardDeck等自定义对象,但CardDeck只能包含标准数据类型的成员。
您的专业人士将如何处理我的问题?核心数据?
我在Android中使用SharedPreferences
和Gson.toJson(cardDeck)
处理了这个问题。
感谢阅读!
答案 0 :(得分:2)
CoreData是基于SQLLite构建的ORM。听起来这可能对您想要的东西来说是过大的。
您只需声明您的类可编码:
级CardDeck:可编码 { }
然后仅使用JSONEncoder,JSONDecoder将它们编码和解码为Data对象,这些对象可以转换为String,然后存储在文件或用户首选项中。 CardDeck中的所有自定义类型也都必须是JSONCodeable。
JSONCodeable是一种协议(即Java的接口),可以实现为现有类的扩展(在Java中无法实现,在C#中可以)。