有没有办法批量删除存储在核心数据中所有实体中的所有数据?
我在某个地方读到,在iOS 9或10中,苹果引入了批量删除的方法,但我似乎无法找到任何有关它的好信息.
最终,我只需要一个通过实体的函数,并删除其中的所有数据.看起来它应该很简单,但它的文档/教程已经证明非常难以找到.
有什么想法吗?
编辑
我将以下代码添加到附加到按钮的IBAction中:
@IBAction func clearAllData(_ sender: AnyObject) {
let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "PLProjects")
let request = NSBatchDeleteRequest(fetchRequest: fetch)
//get the data from core data
getPLData()
//reload the table view
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.如果我关闭项目并重新打开它,数据仍然存在.我假设这也是表视图不更新的原因,因为数据实际上并未被删除.
我一步一步地遵循了本教程:https : //appdividend.com/2018/12/05/laravel-stripe-payment-gateway-integration-tutorial-with-example/
但是,当我进行测试时,出现以下错误:
Stripe \ Error \ InvalidRequest没有这样的付款方式:
一些注意事项:
我确保Stripe处于测试模式,我的Stripe API密钥设置正确,并使用了推荐的测试卡:4242 4242 4242 4242 | 04/22 | 222 | 12345
我仔细阅读了这篇文章的评论,发现其他人也有一个“相似”的问题-但不是关于付款方式的具体错误。
自从Laravel 5.8发布和Cashier 10发布以来-我看到的关于“ paymentIntents”的点点滴滴-因此我不确定这是否是导致问题的原因。
是否有人对我可以解决此错误有任何想法?
谢谢!
这是我使用过的各种代码:
路线(web.php)
Route::group(['middleware' => 'auth'], function() {
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/plans', 'PlanController@index')->name('plans.index');
Route::get('/plan/{plan}', 'PlanController@show')->name('plans.show');
Route::post('/subscription', 'SubscriptionController@create')-
>name('subscription.create');
});
Run Code Online (Sandbox Code Playgroud)
计划模型(plan.php)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Plan extends Model {
protected $fillable = [
'name',
'slug',
'stripe_plan',
'cost',
'description'
];
public function getRouteKeyName() {
return 'slug';
}
}
Run Code Online (Sandbox Code Playgroud)
计划控制器(PlanController.php)
<?php
namespace App\Http\Controllers; …Run Code Online (Sandbox Code Playgroud) 我会尽量在这里尽可能彻底.
我正在处理的应用程序使管理员能够创建文件夹,然后将照片上传到该文件夹.显示类似于Pinterest,它在一个屏幕上加载拼贴中的所有照片.当你只有5到6张照片时它很完美,但很少会出现这种情况.一旦你开始在那里获得更多的照片,它开始变得更慢.另一件事是,每当您删除图片或重新输入该文件夹时,整个显示都必须重新加载.我需要一些缓存这些图像的方法.
这是我的脚本的逻辑:
在dashboard.php,有两个JavaScript包括:homepageActions.js和fileManager.js.homepageActions.js有一个document.ready()脚本,调用一个javascript函数,showFiles().
所以基本上,为了更简洁,只要文档加载,函数showFiles()就会被调用.该函数如下所示:
function showFiles(directoryName) {
$.ajax({
url: 'displayRecords.php',
type: 'post',
data: ({directoryName:directoryName}),
dataType: 'json',
success: function(data) {
constructTable(data);
$(document).find("a[rel*='lightbox']").lightBox();
}
});
}
Run Code Online (Sandbox Code Playgroud)
此函数有一个传递给它的文件夹路径.从那里,AJAX脚本调用查找该文件夹的PHP脚本,并获取该文件夹中所有目录和图像的列表.然后它构造一个JSON字符串,其中包含最初传入的文件夹中每个子文件夹和图像的详细信息.一旦该脚本成功返回,constructTable(data)将调用另一个函数,该函数将JSON字符串传递给该函数.
这是事情开始变得有点毛茸茸的地方.
该constructTable()函数有大约240行代码,我不会在这里包含,因为它很难遵循.总而言之,此函数解析JSON字符串,确定哪些条目是目录,哪些条目是文件.它创建了两个数组:文件夹数组和文件数组.
首先,我处理所有文件夹,并相应地显示它们.这部分很好,我不担心.
然而,在那之后,我开始浏览图像.对于每个图像,我基本上都在编写很多代码.每个图像周围都有div,链接和其他HTML标记.但长话短说,我有一个for ...循环,它查看每个文件路径(从JSON收集),然后构造一个长字符串HTML,然后我使用jQuery附加到DIV中.所以它最终看起来像这样:
for (var a = 0; a < numPhotos; a++) {
photoCode += "<div id='outside-container-"+a+"'>";
photoCode += "<a rel='lightbox' class='photo-link' href='"++"'>";
photoCode += "<img src='http://" + rootURL + "/uploads/"+fileNameArray[a] + "' width='200' …Run Code Online (Sandbox Code Playgroud) 我似乎无法找到任何与Swift 3中的核心数据过滤相关的好文档或教程.
我有以下代码:
let tempVar: String = "abcdef"
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
/* Need code to modify the fetchRequest, so that it only pulls results where the "projectID" field is equal to whatever is stored in the tempVar variable. */
cstProjectDetails = try context.fetch(CSTProjectDetails.fetchRequest())
} catch {
print("There was an error fetching CST Project Details.")
}
Run Code Online (Sandbox Code Playgroud)
基本上,我只是尝试向fetchRequest添加一个简单的过滤器,这样它只从"cstProjectDetails"中提取结果,其中"projectID"字段等于先前设置的变量的内容(在本例中为"tempVar") ).
有任何想法吗?
编辑:已检查的答案为我做了诀窍,但我必须快速调整请求初始化程序的代码.这是我最终得到的代码:
do {
let request: NSFetchRequest<CSTProjectDetails> = CSTProjectDetails.fetchRequest()
request.predicate = NSPredicate(format: "projectID == %@", cstProjectID)
cstProjectDetails …Run Code Online (Sandbox Code Playgroud)