Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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_Swift_Uicollectionview_Realm_Filtering - Fatal编程技术网

Ios 域快速过滤器多个视图控制器

Ios 域快速过滤器多个视图控制器,ios,swift,uicollectionview,realm,filtering,Ios,Swift,Uicollectionview,Realm,Filtering,我们在这里提出了一个问题,对代码进行了一些修改: 我有一个叫做星系的类,每个类都有一个行星列表 class Galaxy: Object { let planets = List<Planet>() } class Planet: Object { dynamic var capitol = String() dynamic var council = String() dynamic var collective = String() dynamic var

我们在这里提出了一个问题,对代码进行了一些修改:

我有一个叫做星系的类,每个类都有一个行星列表

class Galaxy: Object {
  let planets = List<Planet>()
}

class Planet: Object {
  dynamic var capitol = String()
  dynamic var council = String()
  dynamic var collective = String()
  dynamic var signals = String()
}
我有10个viewcontroller,每个都代表一个星系,其中包含该星系特有的各种行星。如何筛选特定星系中的特定行星

当我实例化一个结果时!带有隐式展开可选项的实例,它在第一个Galaxy VC中编译,因为我的AppDelegate中有启动程序数据。当我这样做时,让galaxy=结果?=零在第二个Galaxy VC中,集合视图变为空白

这是有道理的,因为没有数据

所以,我想我有两个问题:如何在没有初始数据的情况下为每个视图控制器实例化一个结果对象和过滤器

我尝试了galays=realm.objectsGalaxy.self.filterplanets==%@,firstPlanet.sortedbyKeyPath:capitol,ascending:False,在viewDidLoad中,但此崩溃:

libc++abi.dylib:以NSException类型的未捕获异常终止


最后,var galaxy=Results引发了一个异常,无法为没有参数的类型结果调用初始值设定项。

对于视图控制器A,从所选星系传递行星,请准备segue方法

var galaxies:[Galaxy] = realm.objects(Galaxy.self)
var selectedGalaxyIndex = 0
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "segue_for_ViewController_B") {
        // pass data to next view
        let vc = segue.destination as viewControllerB
        vc.planets = galaxies[selectedGalaxyIndex].planets
    }
}
在视图控制器B中添加

var planets:[Planet]?

如果没有初始数据,领域查询将为空,这似乎是您想要的。例如:

class Galaxy: Object {
  let planets = List<Planet>()
}

class Planet: Object {
  dynamic var capitol = String()
  dynamic var council = String()
  dynamic var collective = String()
  dynamic var signals = String()
}

let realm = try! Realm()

let galaxies = realm.objects(Galaxy.self)
print(galaxies.count) // => 0
至于您看到的NSException,我建议您阅读打印到控制台或日志上的整个消息,因为这会告诉您您做错了什么。根据您的代码片段,这可能是firstPlanet为nil,这意味着planets==nil是非法查询,因为列表属性永远不能为nil。

您在问什么问题?如果您已经向Stack Overflow发布了一个问题,最好在需要时对该问题进行编辑,而不是创建一个完整的其他帖子。或者,如果引用一篇不同但相关的文章,链接到它也会很有帮助。