在 tableview 中显示图像时 managedObjectModel 错误指令
Posted
技术标签:
【中文标题】在 tableview 中显示图像时 managedObjectModel 错误指令【英文标题】:managedObjectModel Bad Instruction when show image in tableview 【发布时间】:2016-04-26 07:59:48 【问题描述】:我是使用 swift 的新手,在自定义表格视图中显示图像时遇到问题。我从here 获取代码
这是我的核心数据
lazy var managedObjectModel: NSManagedObjectModel =
let modelURL = NSBundle.mainBundle().URLForResource("test", withExtension: "momd")! <---- The error in here
return NSManagedObjectModel(contentsOfURL: modelURL)!
()
这是我在控制器中的代码
func extract_json(jsonData:NSData)
let json: AnyObject?
do
json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: [])
catch
json = nil
return
if let list = json as? NSArray
for (var i = 0; i < list.count ; i++ )
if let data_block = list[i] as? NSDictionary
TableData.append(datastruct(add: data_block))
do
try read()
catch
do_table_refresh()
func do_table_refresh()
dispatch_async(dispatch_get_main_queue(),
self.tableview.reloadData()
//self.activityView.hidden = true
return
)
func load_image(urlString:String, imageview:UIImageView, index:NSInteger)
let url:NSURL = NSURL(string: urlString)!
let session = NSURLSession.sharedSession()
let task = session.downloadTaskWithURL(url)
(
let location, let response, let error) in
guard let _:NSURL = location, let _:NSURLResponse = response where error == nil else
print("error")
return
let imageData = NSData(contentsOfURL: location!)
dispatch_async(dispatch_get_main_queue(),
self.TableData[index].image = UIImage(data: imageData!)
self.save(index,image: self.TableData[index].image!)
imageview.image = self.TableData[index].image
return
)
task.resume()
func read() throws
do
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Images")
let fetchedResults = try managedContext!.executeFetchRequest(fetchRequest)
for (var i=0; i < fetchedResults.count; i++)
let single_result = fetchedResults[i]
let index = single_result.valueForKey("index") as! NSInteger
let img: NSData? = single_result.valueForKey("image") as? NSData
TableData[index].image = UIImage(data: img!)
catch
print("error")
throw ErrorHandler.ErrorFetchingResults
func save(id:Int,image:UIImage)
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
let entity = NSEntityDescription.entityForName("Images",
inManagedObjectContext: managedContext)
let options = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext:managedContext)
let newImageData = UIImageJPEGRepresentation(image,1)
options.setValue(id, forKey: "index")
options.setValue(newImageData, forKey: "image")
do
try managedContext.save()
catch
print("error")
在他们的示例中,它运行顺利,但是当我尝试在我的项目中对其进行编码时,出现错误。它说是
EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
我找不到任何解决方法。
请给我一些提示如何解决这个问题
【问题讨论】:
检查你的核心数据,可能核心数据中的图像名称有错误 @Mr.Bond 我从上面提到的示例中获取代码,并在他们的示例中尝试它的工作没有任何错误,但在我的项目中出现错误,所以我认为没有错误图像名称。如果有错误如何检查呢?抱歉,我是使用 swift 的新手 添加断点并检查您在哪些数据中出错。在您的应用程序中逐一检查数据(tableview 委托方法) 如果在创建managedObjectModel
时出现错误,则应用程序包中没有test.momd
项。
【参考方案1】:
谢谢大家的帮助
我找到了自己的解决方案来解决我的问题
解决方案是我创建的 CoreData 是 xcdatamodel
而不是 xcdatamodeld
并且在我的 AppDelegate 中我使用 momd
所以我只是创建一个带有 xcdatamodeld
扩展名的数据模型
【讨论】:
以上是关于在 tableview 中显示图像时 managedObjectModel 错误指令的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在iOS中进行JSON Pasing一次在tableview上显示不同的图像?
Swift 4 TableView Cell 不显示正确的图像
尝试从 tableView 加载图像时,Swift View Controller 空白