установки: IOS 9, Swift, Xcode 7.1 BetaДобавление и удаление CoreData на основе поискового запроса значения атрибута
Цель заключается в создании корзины функционально, для которых мне нужно уникальные значения в CoreData.
У меня есть UITableView, в котором данные (название, стоимость, количество, идентификатор) загружаются из бэкэнда Parse. Каждая пользовательская ячейка TableView имеет кнопку, нажимающую, которая сохраняет выбранные данные строки в CoreData.
Я не хочу иметь дубликат продукта в корзине, поэтому перед сохранением я хочу проверить, есть ли у корзины продукт. Если это так, я хочу заменить тележку на данные, отобранные в данный момент. Если нет, просто добавьте новый товар в корзину.
Установка My CoreData проста.
имя Entity = Корзина
Атрибуты = PNAME (тип String), pCost (тип Int), pQuantity (тип Int), идентификатор заказа (тип String)
Добавить продукт в Код корзины корзины выглядит так:
// Product data is retrieved in these variable
var pNam = NSMutableArray()
var pCost = NSMutableArray()
var pQty = NSMutableArray()
var pObjectID = NSMutableArray()
// Add to Cart button ....
let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0)
let cell = tableView.cellForRowAtIndexPath(indexPath) as! ProductMenuTableViewCell! // Custom cell in which the button add to Cart button is placed
let entityDescription = NSEntityDescription.entityForName("Cart", inManagedObjectContext: managedObjectContext!)
let cart = Cart(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext)
cart.pName = pNam[indexPath.row].description
cart.pCost = pCst[indexPath.row].integerValue!
cart.pQuantity = pQty[indexPath.row].integerValue!
cart.orderID = pObjectID[indexPath.row].description
var error: NSError?
do {
try managedObjectContext?.save()
} catch let error1 as NSError {
error = error1
}
if let err = error {
print(err.localizedFailureReason)
} else {
print("Saved")
}
Должен ли я напрямую использовать ячейку для добавления значений в CoreData? Например: cart.pName = cell.pName.text!
или есть лучший способ сделать это? Кто-нибудь знает, как это решить?
Не могли бы вы рассказать мне, почему метод indexPath лучше, чем метод меток ячейки? Любые плюсы и минусы? Спасибо за код, я скоро его проверю и обновлю. –
@VickyArora На практике я уверен, что использование ярлыков ячеек можно заставить работать, но я думаю, что это немного не соответствует дизайну модели Apple Model-View-Controller (см. [Здесь] (https://developer.apple. ком/библиотека/ИОС/документация/Общие/Концептуальная/DevPedia-CocoaCore/MVC.html # // apple_ref/DOC/UID/TP40008195-CH32-SW1)). Пример того, что может пойти не так: предположим, что позже вы захотите создать интернационализированную версию своего приложения. Все метки должны быть переведены, тогда как ваши данные могут оставаться на базовом языке. Вам нужно будет «непереводить» метки в приведенном выше коде. – pbasdf