Фильтрация результатов из области - PullRequest
0 голосов
/ 18 октября 2018

Я сохранил данные координат в Realm, и я пытаюсь разделить результаты на 2 отдельных Array s или CLLocationDegrees (широта и долгота), но я не могу понять, как.Я печатаю полученные результаты, поэтому я знаю, что они были успешно сохранены / извлечены - вывод консоли:

[0] Data {
    latitude = 37.33454847;
    longitude = -122.03611286;
    }, 
[1] Data {
    latitude = 37.33454218;
    longitude = -122.03638578;
    }, 
//and continues...

Класс ViewController (функция loadLocations)

func loadLocations() {
    theLocations = realm.objects(Data.self)
    print(theLocations)
    //This function gets called in the viewDidLoad()
}

Класс данных

class Data: Object {
    @objc dynamic var latitude: CLLocationDegrees()
    @objc dynamic var longitude: CLLocationDegrees()
}

Как бы я разделил широту и долготу на их собственные Array s или CLLocationDegrees?Или даже Array из CLLocationDegrees, чтобы затем покрыть полилинейным наложением?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы можете сопоставить свои Results<Data> с CLLocationCoordinate2D с и затем поместить их в массив:

let results = realm.objects(Data.self) // btw, Data is a terrible name. You should call it "Coordinate"
let arrayOfCoordinates = Array(results.map { CLLocationCoorinate2D(latitude: $0.latitude, longitude: $0.longitude) })
// arrayOfCoordinates is of type [CLLocationCoordinate2D]

Однако вы не используете Realm в полной мере таким образом.Предполагается, что к царству Results нужно обращаться лениво (т.е. только тогда, когда они вам нужны).Если вы немедленно преобразуете все это в массив, вы в основном загружаете все в память.Я рекомендую вам использовать ленивую коллекцию, возвращаемую map напрямую:

let lazyCollection = results.map { CLLocationCoorinate2D(latitude: $0.latitude, longitude: $0.longitude) }
0 голосов
/ 18 октября 2018

Вы можете сделать это следующим образом:

Область не настроена в моем проекте, поэтому я работаю со структурой.

Структура расположения:

struct Locations {

    let latitude: Double
    let longitude: Double
}

    // Your Realm result Array
    var theLocations = [Locations]()

    // Adding Dummy Data into theLocations Array
    theLocations.append(Locations(latitude: 37.33454847, longitude: -122.03611286))
    theLocations.append(Locations(latitude: 37.33454218, longitude: -122.03638578))

    // latitude and longitude to store values
    var arrLat = [Double]()
    var arrLong = [Double]()

    // Looping  through theLocations Array and Seperate latitude and longitude to append to array
    theLocations.forEach{ location in
        arrLat.append(location.latitude)
        arrLong.append(location.longitude)
    }

Надеюсь, этотебе поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...