Я только начал использовать Realm, в основном, чтобы предварительно заполнить мое приложение данными. Поэтому я решил, что самый простой способ сделать это - импортировать существующий JSON-файл в мое приложение, но я столкнулся с несколькими проблемами.Импорт JSON в Realm.io
Файл я пытаюсь импортировать отформатирован так:
{ "DDD" : "3D Systems Corporation", "MMM" : "3M Company", "WBAI" : "500.com Limited", "WUBA" : "58.com Inc.", "AHC" : "A.H. Belo Corporation", "ATEN" : "A10 Networks, Inc.", "AAC" : "AAC Holdings, Inc.", "AIR" : "AAR Corp." }
, и я хотел бы получить его в Dictionary<String,String>
или NSMutuableDictionary
.
Мой код выглядит следующим образом:
class Stock: RLMObject {
dynamic var name = ""
dynamic var ticker = ""
}
class Table: RLMObject {
dynamic var stocks = RLMArray(objectClassName: Stock.className())
}
import Realm
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let jsonFilePath:NSString = NSBundle.mainBundle().pathForResource("nyseDict", ofType: "json")!
let jsonData:NSData = NSData.dataWithContentsOfMappedFile(jsonFilePath as String) as! NSData
let error:NSError?
let json = JSON(jsonData)
let realm: RLMRealm = RLMRealm.defaultRealm()
var table = Table()
for var i = 0; i < json.count; ++i {
let myStock = Stock()
myStock.name = json[i][0].string!
myStock.ticker = json[i][1].string!
realm.beginWriteTransaction()
realm.addObject(myStock)
table.stocks.addObject(myStock)
realm.commitWriteTransaction()
}
realm.transactionWithBlock() {
realm.addObject(table)
}
for obj in Table.allObjects(){
println(obj.description)
}
return true
}
Для начала, я получаю сообщение об ошибке в строке номер 15: let collectionDicts:NSArray = NSJSONSerialization.JSONObjectWithData(jsonData, options: 0, error: &error)
говоря, что:
Cannot invoke 'JSONObjectWithData' with an argument list of type '(NSData, options: Int, error: inout NSError?)'
, и я не совсем уверен, что иначе я бы его инициализировал.
Помимо этого, мне просто интересно узнать, есть ли другие ошибки, о которых вы могли бы указать, поскольку я не смог проверить свой код.
Любые предложения будут оценены.
EDIT: Изменив свой код на один выше, я теперь могу загрузить приложение без ошибок, но все же ничего не происходит, когда я пытаюсь напечатать описания объектов в конце.
Только что изменил мой код с помощью библиотеки SwiftyJSON, так что теперь исправлена ошибка, теперь я могу загрузить приложение без проблем, но когда я пытаюсь напечатать их в конце, ничего не происходит. – joseph
мы не знаем, что происходит внутри 'Stockdata.createInDefaultRealmWithObject (запаса)' - для всех, кого мы знаем, он может возвращать пустые данные. Вы действительно должны научиться садиться и отлаживать свой код, прежде чем спросить людей о том, как это сделать. – timzilla
Это стандартная функция, а не одна, которую я создал. – joseph