【发布时间】:2015-05-01 05:42:22
【问题描述】:
我刚刚开始使用 Realm,主要是为了能够使用数据预先填充我的应用程序。所以我认为最简单的方法是将现有的 JSON 文件导入我的应用程序,但我遇到了一些问题。
我尝试导入的文件格式如下:
{ “DDD”:“3D Systems Corporation”,“MMM”:“3M 公司”,“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) 说:
无法使用类型参数列表调用“JSONObjectWithData” '(NSData, options: Int, error: inout NSError?)'
我不太确定我会用什么其他方式来初始化它。
除此之外,我只是想知道您是否可以指出任何其他错误,因为我无法测试我的代码。
任何建议将不胜感激。
编辑:通过将我的代码更改为上面的代码,我现在可以毫无错误地加载我的应用程序,但是当我尝试在最后打印对象描述时仍然没有任何反应。
【问题讨论】:
标签: ios json swift nsdictionary realm