Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从视图控制器访问内存中的自定义对象?_Ios_Custom Object - Fatal编程技术网

Ios 如何从视图控制器访问内存中的自定义对象?

Ios 如何从视图控制器访问内存中的自定义对象?,ios,custom-object,Ios,Custom Object,在我的应用程序中,我获取一个coredatabase并将结果放入一个名为self.stores的数组中。我将这些存储位置转换为具有距离属性的MyLocation对象。我按如下方式绘制MyLocation对象: - (void)plotStorePositions:(NSString *)responseString { for (id<MKAnnotation> annotation in _mapView.annotations) { [_mapView

在我的应用程序中,我获取一个coredatabase并将结果放入一个名为self.stores的数组中。我将这些存储位置转换为具有距离属性的MyLocation对象。我按如下方式绘制MyLocation对象:

- (void)plotStorePositions:(NSString *)responseString {

    for (id<MKAnnotation> annotation in _mapView.annotations) {
        [_mapView removeAnnotation:annotation];
    }
    //CYCLE THRU STORE OBJECTS
    for (Store * storeObject in self.stores) {

        NSString * latitude = storeObject.latitude;
        NSString * longitude = storeObject.longitude;
        NSString * storeDescription = storeObject.name;
        NSString * address = storeObject.address;

        //CREATE MYLOCATION OBJECTS
        CLLocationCoordinate2D coordinate;
        coordinate.latitude = latitude.doubleValue;
        coordinate.longitude = longitude.doubleValue;
        MyLocation *annotation = [[MyLocation alloc] initWithName:storeDescription address:address coordinate:coordinate distance:0];

        //CREATE A PIN FOR EACH MYLOCATION ANNOTATION
        CLLocation *pinLocation = [[CLLocation alloc] initWithLatitude:annotation.coordinate.latitude longitude:annotation.coordinate.longitude];

        //SET USERLOCATION (Must move this code out)
        self.userLocation = [[CLLocation alloc] initWithLatitude:self._mapView.userLocation.coordinate.latitude longitude:self._mapView.userLocation.coordinate.longitude];

        //SET USERLOCATION TO APPDELEGATE (Must move this code out)
        AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
        myDelegate.userLocation = self.userLocation;

        //CALCULATE DISTANCE AND SET ITS THAT MYLOCATION's DISTANCE PROPERTY
        CLLocationDistance calculatedDistance = [pinLocation distanceFromLocation:userLocation];
        annotation.distance = calculatedDistance/1000;        

        [_mapView addAnnotation:annotation];

    }

}

这是在地图视图中。然后我有一个tableview,在那里我获取相同的coredatabase并再次获取self.stores。然后我循环遍历self.stores数组,创建要放入tableview单元格的STORE对象。但我想对这些细胞进行分类。如何获取应该在内存中的MyLocation对象?我需要将它们传递给appDelegate还是tableview控制器?

当您使用核心数据时,最好的选择是使用NSFetchedResultsController来填充表视图


然后,您所需要的只是来自另一个控制器或应用程序委托的托管对象上下文

使用正确的标签。你认为object标签是获得IOS开发答案的合适标签吗?我很难理解你的问题。您是在问如何根据距离对self.stores对象进行排序吗?我有一个mapview控制器和一个tableview控制器。mapviewcontroller很好。我希望tableview单元格按距离排序。目前,单元格是从self.stores数组中的Store对象填充的。存储对象显然与userLocation属性没有距离。因此,在mapviewcontroller中,我使用plotStores方法,将db fetch放入self.stores数组中,并通过使用MyLocation NSObject创建MKannotations,该对象具有距离属性。有没有办法只访问那些MyLocation对象来对单元格进行排序?哪个类有self.stores?都是mapviewcontroller,上面的plot方法就是从这里来的。我在tableviewcontroller中再次这样做。实际上,我在两个ViewController的viewDidLoad方法中都重复了一次db fetch,并将其结果放入NSArray self.stores中。但我的核心数据没有距离属性。所以我必须把数据取出,放入一个数组中进行排序。你考虑过瞬态特性吗?