小编Joh*_*ler的帖子

删除Swift 3中Core Data实体中的所有数据

有没有办法批量删除存储在核心数据中所有实体中的所有数据?

我在某个地方读到,在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)

但这似乎不起作用.如果我关闭项目并重新打开它,数据仍然存在.我假设这也是表视图不更新的原因,因为数据实际上并未被删除.

core-data swift3 ios10 xcode8

34
推荐指数
3
解决办法
3万
查看次数

无法使用Laravel 5.8 / Cashier / Stripe设置订阅

我一步一步地遵循了本教程: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)

php laravel laravel-cashier laravel-stripe

4
推荐指数
2
解决办法
1141
查看次数

缓存通过PHP/AJAX/JSON/jQuery加载的动态图像

我会尽量在这里尽可能彻底.

我正在处理的应用程序使管理员能够创建文件夹,然后将照片上传到该文件夹​​.显示类似于Pinterest,它在一个屏幕上加载拼贴中的所有照片.当你只有5到6张照片时它很完美,但很少会出现这种情况.一旦你开始在那里获得更多的照片,它开始变得更慢.另一件事是,每当您删除图片或重新输入该文件夹时,整个显示都必须重新加载.我需要一些缓存这些图像的方法.

这是我的脚本的逻辑:

dashboard.php,有两个JavaScript包括:homepageActions.jsfileManager.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)

javascript php jquery json caching

2
推荐指数
1
解决办法
1726
查看次数

需要帮助过滤Swift 3中的核心数据

我似乎无法找到任何与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)

filtering core-data nspredicate swift3

1
推荐指数
1
解决办法
5149
查看次数