검색 한 바코드를 사용하여 Swift에서 핵심 데이터를 가져 오는 방법은 궁금합니다. 기본적으로 바코드를 static func
메서드에 전달하고 있는데 어떻게 핵심 데이터에서 데이터를 가져올 수 있습니까? 여기 신속한 문자열 사용 방법
func barcodeDetected(code: String) {
// Let the user know we've found something.
let alert = UIAlertController(title: "Found a Barcode!", message: code, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Search", style: UIAlertActionStyle.Destructive, handler: { action in
// Remove the spaces.
let trimmedCode = code.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// EAN or UPC?
// Check for added "0" at beginning of code.
let trimmedCodeString = "\(trimmedCode)"
var trimmedCodeNoZero: String
if trimmedCodeString.hasPrefix("0") && trimmedCodeString.characters.count > 1 {
trimmedCodeNoZero = String(trimmedCodeString.characters.dropFirst())
// Send the doctored barcode
ProductDetailsViewController.searchCode(trimmedCodeNoZero)
} else {
// Send the doctored barcode
ProductDetailsViewController.searchCode(trimmedCodeString)
}
self.navigationController?.popViewControllerAnimated(true)
}))
self.presentViewController(alert, animated: true, completion: nil)
}
내 제품 클래스 : 이미 성공적으로 코어 데이터에 항목을 추가 한 테이블에있는 모든 항목을로드 할 수 있었다
import UIKit
import Foundation
import CoreData
class ProductDetailsViewController: UIViewController, NSFetchedResultsControllerDelegate {
@IBOutlet weak var productLabel: UILabel!
@IBOutlet weak var priceLabel: UILabel!
@IBAction func addProduct(sender: AnyObject) {
let AppDel = UIApplication.sharedApplication().delegate as? AppDelegate
let context:NSManagedObjectContext = (AppDel?.managedObjectContext)!
let ent = NSEntityDescription.entityForName("Products", inManagedObjectContext: context)
var newProduct = ProductItem(entity: ent!, insertIntoManagedObjectContext: context)
newProduct.title = productLabel.text
//newProduct.price = priceLabel.text
/*context.save(nil)
print(newProduct)
print("Object Saved")*/
}
private(set) var PRODUCT_NAME = ""
private(set) var PRODUCT_PRICE = ""
private var menuItems:[ProductItem] = []
static func searchCode(codeNumber: String) -> String{
let barcodeNumber = codeNumber
return barcodeNumber
}
deinit{
NSNotificationCenter.defaultCenter().removeObserver(self)
}
override func viewDidLoad() {
super.viewDidLoad()
productLabel.text = "Scan a Product"
priceLabel.text = ""
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setLabels:", name: "ProductNotification", object: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
내 앱. 이제는 바코드 스캔을 통해 바코드가있는 제품을로드 할 수 있기를 원하며 그 부분에 붙어 있습니다. 내 정적 인 재미있는 searchCode가 barcodeDetected에서 바코드를 수신하고 있음을 볼 수 있겠지만 다음에 가져와야하는 것은 무엇입니까? 감사.
편집 :
코어 데이터 엔터티
import Foundation
import CoreData
@objc(ProductItem)
class ProductItem: NSManagedObject{
@NSManaged var barcodeNum:String?
@NSManaged var box_height:NSNumber?
@NSManaged var box_length:NSNumber?
@NSManaged var box_width:NSNumber?
@NSManaged var price:NSNumber?
@NSManaged var sku:String?
@NSManaged var weight:NSNumber?
@NSManaged var title:String?
}
누구에게 도움을 주시겠습니까? 감사합니다, 고마워요. – CodingKid92
엔티티의 세부 정보를 표시 할 수 있습니까? 바코드가 포함될 속성이 명확하지 않습니다. 또한 VC가 첫 번째 코드 인 뷰 컨트롤러 계층 구조를 명확히합니다. CoreData에서 관련 객체를 가져 오면 무엇을하고 싶습니까? – pbasdf
Core Data Entity에서 편집했습니다. 바코드가 포함 된 속성은 barcodeNum입니다. 또한 barcodeNum 객체를 가져 오면 바코드와 관련된 다른 모든 속성을 표시 할 수 있기를 원합니다. 하지만 내 문제는 일단 내 바코드가 내 ViewController에서 스캔되어 내 ProductsViewController에 전달되면 나는 다음에 무엇을해야할지 고집합니다. @ pbasdf – CodingKid92