我試圖建立一個斯威夫特應用程序,將查詢我的API服務器相關的食品數據......因爲有這麼多不同的食物,我只想存儲當用戶選擇這樣做時,設備上的圖像。爲此,我試圖使用SVGKit來側載SVG圖像。要存儲它們,我想使用Core Data。我還使用SwiftyJSON來解析傳入的數據。免責聲明:我在Swift和iOS開發方面很新穎。試圖SVGKit圖像保存到CoreData
我有SVGKit設置,以及其他一切關於我的要求似乎很好地工作(數據沒有成功返回,和我沒有任何存儲之外的所有SVGKImage問題)。
下面是一個函數內,已經有一個管理對象上下文:
var request = NSMutableURLRequest(URL: NSURL(string: "\(apiImageURLBase)/\(query)")!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
let retrievedData = JSON(data: data, options: nil, error: nil)
if let imageName = retrievedData["name"].string {
let imageSVGData = retrievedData["data"].string
let imageColor = UIColor(hexString: retrievedData["color"].string)
let svgParse: SVGKParser = SVGKParser(source: SVGKSource(inputSteam: NSInputStream(data: imageSVGData!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!)))
svgParse.addDefaultSVGParserExtensions()
let imageSVG = SVGKImage(parsedSVG: svgParse.parseSynchronously(), fromSource: nil)
FoodImage.createInManagedObjectContext(managedObjectContext!, name: imageName, added: NSDate(), image: imageSVG, color: imageColor!)
}
}
這是我如何設置我的託管對象和它的保存方法:
class FoodImage: NSManagedObject {
@NSManaged var name: String
@NSManaged var added: NSDate
@NSManaged var image: SVGKImage
@NSManaged var color: UIColor
class func createInManagedObjectContext(context: NSManagedObjectContext, name: String, added: NSDate, image: SVGKImage, color: UIColor) -> NSManagedObject {
let entity = NSEntityDescription.entityForName("FoodImage", inManagedObjectContext: context)
let item = FoodImage(entity: entity!, insertIntoManagedObjectContext: context)
item.name = name
item.added = added
item.image = image
item.color = color
if !context.save(nil) {
println("Could not save.")
}
return item
}
}
的我遇到的問題是if !context.save(nil)
當我執行保存時出現以下錯誤:
-[SVGKImage encodeWithCoder:]: unrecognized selector sent to instance 0x16eea720
*** -[NSKeyedArchiver dealloc]: warning: NSKeyedArchiver deallocated without having had -finishEncoding called on it.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SVGKImage encodeWithCoder:]: unrecognized selector sent to instance 0x16eea720'
我真的不知道內存分配是否足以診斷這個問題,我最初的想法是Swift處理大部分分配?無論如何,如果有人知道我能做些什麼來解決這個問題,我會非常感激!
我應該在FoodImage的數據模型中添加圖像屬性設置爲可變形 – 2014-11-09 02:00:46