Ios 将数据从JSON文件加载到表中
我有一个名为“List”的核心数据模型,它有4个属性,希望将JSON文件中的数据填充到“List”类型的数组中 当我运行应用程序时,它会给出错误“致命错误:数组索引超出范围”Ios 将数据从JSON文件加载到表中,ios,json,swift,Ios,Json,Swift,我有一个名为“List”的核心数据模型,它有4个属性,希望将JSON文件中的数据填充到“List”类型的数组中 当我运行应用程序时,它会给出错误“致命错误:数组索引超出范围” var loadNames = [List]() var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext! var frc: NSFetchedResultsController = N
var loadNames = [List]()
var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var frc: NSFetchedResultsController = NSFetchedResultsController()
func getFetchedResultsController() -> NSFetchedResultsController {
frc = NSFetchedResultsController(
fetchRequest: listFetchRequest(),
managedObjectContext: context,
sectionNameKeyPath: "done",
cacheName: nil)
return frc
}
func listFetchRequest() -> NSFetchRequest {
let fetchRequest = NSFetchRequest(entityName: "List")
let doneSortDescriptor = NSSortDescriptor(key: "done", ascending: false)
let nameSortDescriptor = NSSortDescriptor(key: "firstName", ascending: true)
fetchRequest.sortDescriptors = [doneSortDescriptor, nameSortDescriptor]
return fetchRequest
}
func isFrequent(item: List) -> Bool {
return item.frequent == true
}
override func viewWillAppear(animated: Bool) {
var readError:NSError?
let filePath = NSBundle.mainBundle().pathForResource("NameList", ofType:"json")
let data = NSData(contentsOfFile:filePath!, options: NSDataReadingOptions.DataReadingUncached, error:&readError)
var jData = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &readError) as! NSArray
for i in 0..<jData.count {
if let jfName = jData[i]["firstName"] as? String {
if let jlName = jData[i]["lastName"] as? String {
if let jDone = jData[i]["done"] as? NSNumber {
if let jFrequent = jData[i]["frequent"] as? NSNumber {
loadNames[i].firstName = jfName //This is where the error is pointing.
loadNames[i].lastName = jlName
loadNames[i].done = jDone
loadNames[i].frequent = jFrequent
println(loadNames.count)
}
}
}
}
}
}
var loadNames=[List]()
变量上下文=(UIApplication.sharedApplication().delegate为!AppDelegate)。managedObjectContext!
var frc:NSFetchedResultsController=NSFetchedResultsController()
func getFetchedResultsController()->NSFetchedResultsController{
frc=NSFetchedResultsController(
fetchRequest:listFetchRequest(),
managedObjectContext:context,
sectionNameKeyPath:“完成”,
缓存名称:nil)
返回frc
}
func listFetchRequest()->NSFetchRequest{
let fetchRequest=NSFetchRequest(entityName:“列表”)
让doneSortDescriptor=NSSortDescriptor(键:“完成”,升序:false)
让nameSortDescriptor=NSSortDescriptor(键:“firstName”,升序:true)
fetchRequest.sortDescriptors=[doneSortDescriptor,nameSortDescriptor]
返回请求
}
func isFrequent(项目:列表)->Bool{
return item.frequency==true
}
覆盖功能视图将出现(动画:Bool){
var readError:NSError?
让filePath=NSBundle.mainBundle().pathForResource(“名称列表”,类型为:“json”)
let data=NSData(contentsOfFile:filePath!,选项:NSDataReadingOptions.datareadinguncache,错误:&readError)
var jData=NSJSONSerialization.JSONObjectWithData(data!,选项:.MutableContainers,错误:&readError)作为!NSArray
对于0中的i..您应该使用loadNames数组的append
方法添加每个列表对象。试图访问零长度数组中的索引i>=0是导致错误的原因