小编Lor*_*ssi的帖子

Realm模型中的单一反比关系

我正在开发一个简单的iOS应用程序来学习Swift,我正在使用Realm.据我所知,在Realm中,反向关系是通过一个LinkingObjects属性来实现的,该属性是一个包含链接到那个对象的所有对象的集合.

从Realm文档中考虑这个例子:

class Person: Object {
    // ... other property declarations
    let dogs = List<Dog>()
}

class Dog: Object {
    dynamic var name = ""
    dynamic var age = 0
    let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}
Run Code Online (Sandbox Code Playgroud)

在我的模型,我知道,每个Dog实例将只有一个所有者,因为每一个狗,创建时被添加到只有一个PersonList.

现在,我想有一个owner: Person属性的Dog类,它唯一的主人引用使代码更直观,更简单的(而不必写出dog.owners.first每一次),同时保持延迟加载行为(它们被延迟加载的,对不对? ).我不知道查询"链接对象"有多贵,但由于周围会有很多"狗",我认为最好不要在对象初始化时访问它们.

现在这些是我能想到的解决方案:

1:

class Dog: Object {
    let owner: Person = LinkingObjects(fromType: Person.self, property: "dogs").first!
}
Run Code Online (Sandbox Code Playgroud)

2A:

class Dog: Object { …
Run Code Online (Sandbox Code Playgroud)

lazy-loading realm ios swift

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

领域列表和Swift阵列

我想使用Realm来保存数据,因为它似乎比Core Data更容易学习和使用.
然而,有些方面对我来说仍然不清楚,其中一个方面是使用领域列表.

例如,我现在有这样的事情:

class Foo {
    var a: String
    var b: [Bar]
    var average: Double {
        return Double(b.reduce(0.0, combine: {$0 + $1.c})) / Double(b.count);
    }
    //...

}

class Bar {
    var c: Float
    var d: NSDate
    //...
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要List在Swift 上使用Realm Array才能建立"多对多关系".
除了计算平均值(如在代码中),我使用foo.b数组来填充tableview和一些for in循环.我还将它映射到其他数组并使用其filter()功能.

现在,我应该只使用Realm List还是应该将它映射到本机Swift阵列然后使用它(出于性能和简单性的原因)?

arrays realm ios swift

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

使用空间分析函数和数据类型在MySQL中按距离排序

我正在使用Laravel 5.5构建一个php web应用程序,我需要显示按用户指定位置的距离排序的地点列表(例如商店).这些地方将存储在MySQL数据库中,并应作为Eloquent ORM模型实例进行检索.

做了一些研究我发现了很多关于这个主题的帖子和问题(提出了不同的解决方案),但是,由于对数据库和地理定位/地理空间分析的经验很少,他们大多困惑我,我想知道要采用什么方法和什么是这种情况下的最佳做法.

我读过的大多数答案都建议在SQL查询中使用半字形公式余弦球面定律,这看起来像(从这个答案中取得的例子):

$sf = 3.14159 / 180; // scaling factor
$sql = "SELECT * FROM table 
    WHERE lon BETWEEN '$minLon' AND '$maxLon' 
      AND lat BETWEEN '$minLat' AND '$maxLat'
    ORDER BY ACOS(SIN(lat*$sf)*SIN($lat*$sf) + COS(lat*$sf)*COS($lat*$sf)*COS((lon-$lon)*$sf))";
Run Code Online (Sandbox Code Playgroud)

这篇文章指出,在短距离内,假设地球平坦并计算一个简单的欧氏距离是一个很好的近似,并且比使用半正式公式更快.
由于我一次只需要对一个城市内的地点进行排序,这似乎是一个很好的解决方案.

但是,大多数这些帖子和SO答案都有几年的历史了,我想知道现在(MySQL 5.7)是否有更好的解决方案.

例如,这些都不岗位使用任何的MySQL的"空间分析功能",喜欢ST_Distance_SphereST_Distance这似乎是完全用于这一目的.
是否有任何理由(例如,性能,精度)使用这些函数而不是在查询中编写公式?(我不知道这些函数内部使用了哪种算法)

我也不知道应该如何存储每个地方的坐标.大多数的我看到假定坐标的实例将被存储在单独的lat,lon列作为双打或FLOAT(10,6)(如在该示例中由谷歌),但也MySQL的POINT数据类型似乎是适当用于存储地理坐标.
这两种方法的优点和缺点是什么?

如何使用索引来加速这些查询?例如,我读过"空间索引",但我认为它们只能用于限制结果MBRContains(),而不是按距离实际排序结果.

那么,我应该如何存储地点的坐标以及如何查询它们按距离排序?

php mysql geospatial geo laravel-eloquent

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

何时在Swift中使用全局变量

我正在学习Swift和iOS应用程序开发,我想知道在哪些情况下(如果有的话)我应该在iOS应用程序中使用全局变量和常量.

全局变量是在任何函数,方法,闭包或类型上下文之外定义的变量.局部变量是在函数,方法或闭包上下文中定义的变量.

使用全局变量通常看起来不够优雅且不可取(实际上大多数指南和教程并不推荐)并且在视图控制器之间传递数据我使用该prepareForSegue(_: sender:)方法.

在某些情况下,在我看来,使用全局变量会使代码更简单,更快.

例如,Apple建议为每种格式模式存储一个NSDateFormatter或一个NSNumberFormatter,而不是每次需要时重新创建或更改一个格式模式.在我正在开发学习语言的应用程序中,大多数视图控制器使用a NSDateFormatter和a NSNumberFormatter并为每个视图控制器创建一个新的可能不是一个好主意.我可以通过prepareForSegue传递它,但我认为在这种情况下,最好使用一个全局var来保存每个视图控制器都可以使用的格式化程序实例.

那么在任何情况下我都应该使用全局变量吗?

global global-variables ios swift

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

理解 Webpack:为什么要添加这几行 javascript?

我正在学习 Laravel 并试图了解如何使用Laravel Mix来捆绑资产(scss 和 javascript)。

正如文档所说:

Laravel Mix 提供了一个流畅的 API,用于使用几种常见的 CSS 和 JavaScript 预处理器为 Laravel 应用程序定义 Webpack 构建步骤。


我认为Webpack会简单地将所有 javascript 文件连接成一个(并可选择缩小它),就像它处理.scss文件一样,这些文件被编译成 CSS 并合并到public/css/app.css

正如这个答案所说:

Webpack 是一个命令行工具,用于创建资产包(代码和文件)。Webpack 不在服务器或浏览器上运行。Webpack 获取您所有的 javascript 文件和任何其他资产,然后将其转换为一个巨大的文件。


如果它实际上只是一个构建工具并且它的任何部分都没有在浏览器上运行,那么我不明白为什么它在我构建时将这个 javascript 添加到编译文件的顶部npm run dev(以及它究竟做了什么):

/******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};
/******/
/******/    // The require function
/******/    function __webpack_require__(moduleId) {
/******/
/******/        // …
Run Code Online (Sandbox Code Playgroud)

javascript laravel webpack laravel-mix

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