- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您好,我正在学习 Swift,我正在尝试将 Parse 实现到我的应用程序中。所以我有一个 MapView,它有一些注释。这些注释是从存储在 Parse 数据库中的坐标绘制的。 Parse 中的每个坐标元组都有其他详细信息,如 FirstName LastName 等。现在,一旦用户单击 mapView 中存在的 DETAILS 按钮。它将用户带到一个 TableView Controller ,用户可以在其中看到与在 mapView 中可见的坐标有关的所有详细信息。到现在为止一切正常。所以如果我在 map View 中有 4 个注释。然后通过单击 DETAILS,我被重定向到 TableView Controller ,在那里我可以看到与 mapView 中存在的所有坐标/注释相关的详细信息。现在我想要一个用户可以点击 TableView Controller 单元格的功能,我可以将数据传递给与该特定单元格相关的另一个 View 。因此,如果在 TableView Controller 中,用户单击属于 map View 上显示的注释之一的第 4 个单元格。我希望将第 4 个单元格详细信息传递给另一个 View Controller 。
map View (带有多个注释)-> tableview Controller (带有多个单元格)-> View Controller (与用户点击的单元格相关)。
问题:只要我单击 TableView Controller 中的任何单元格,以便我可以在另一个 View Controller 中看到该单元格的详细信息,我的应用程序就会崩溃,我会看到错误
2015-11-30 21:38:42.998 LifeLine[53788:6661072] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can only call -[PFObject init] on subclasses conforming to PFSubclassing.'
我在 TableView Controller 中放置了断点 AT PREPAREFORSEGUE METHOD。但即使在 prepareforsegue 方法断点命中之前,我的应用程序已经崩溃了。所以崩溃发生在我点击单元格和在 prepareforsegue 上设置断点之间。
我的 map View Controller :
import UIKit
import MapKit
import MessageUI
class MultipleAnnotationViewController: UIViewController, MKMapViewDelegate, MFMailComposeViewControllerDelegate
{
var arrayOfPFObject: [PFObject] = [PFObject]()
var lat_ :Double = 0
var long_ :Double = 0
@IBOutlet weak var dispAnnotation: MKMapView!
let currentUser = PFUser.currentUser()
var pinAnnotationView:MKPinAnnotationView!
override func viewDidLoad()
{
super.viewDidLoad()
dispAnnotation.delegate = self
for coordinateItem in arrayOfPFObject
{
let pointAnnotation = MKPointAnnotation()
self.lat_ = coordinateItem["Latitude"] as! Double
self.long_ = coordinateItem["Longitude"] as! Double
pointAnnotation.coordinate = CLLocationCoordinate2D(latitude: self.lat_, longitude: self.long_)
dispAnnotation.addAnnotation(pointAnnotation)
pointAnnotation.title = String(coordinateItem["FirstName"]) + " " + String(coordinateItem["LastName"])
let miles = 10.0
let scalingFactor = abs(( cos ( 2*M_PI*pointAnnotation.coordinate.latitude/360.0 ) ) )
var span = MKCoordinateSpan(latitudeDelta: 0, longitudeDelta: 0)
span.latitudeDelta = miles/69.0
span.longitudeDelta = miles/(scalingFactor * 69.0)
let region = MKCoordinateRegionMake(pointAnnotation.coordinate, span)
[ self.dispAnnotation.setRegion(region, animated: true)]
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "TableView"
{
let controller = segue.destinationViewController as! TableViewController
controller.arrayOfPFObject = arrayOfPFObject
}
if segue.identifier == "TableView2"
{
let controller = segue.destinationViewController as! ChecklistViewController
controller.arrayOfPFObject = arrayOfPFObject
}
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
guard !(annotation is MKUserLocation)
else
{
return nil }
let identifier = "com.domain.app.something"
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView
if annotationView == nil
{
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView?.pinTintColor = UIColor.redColor()
annotationView?.canShowCallout = true
}
else
{
annotationView?.annotation = annotation
}
return annotationView
}
}
我的 TableViewController:
import UIKit
class ChecklistViewController: UITableViewController
{
override func viewDidLoad() {
super.viewDidLoad()
}
var arrayOfPFObject: [PFObject] = [PFObject]()
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return arrayOfPFObject.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier(
"ChecklistItem", forIndexPath: indexPath)
let label = cell.viewWithTag(1000) as! UILabel
print(arrayOfPFObject.count)
print(indexPath.row)
let coordinateItem = arrayOfPFObject[indexPath.row]
label.text = String(coordinateItem["Address"])
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if segue.identifier == "call"
{
let controller = segue.destinationViewController as! CallEmailViewController
if let indexPath = tableView.indexPathForCell( sender as! UITableViewCell)
{
controller.itemToEdit = arrayOfPFObject[indexPath.row]
}
}
}
}
我的 View Controller ,我想在其中显示所点击单元格的详细信息。
import UIKit
import CoreLocation
import MapKit
class CallEmailViewController: UITableViewController
{
var itemToEdit: PFObject = PFObject()
override func viewDidLoad()
{
super.viewDidLoad()
mail() //print(arrayOfPFObject.count)
}
func mail()
{
print("")
}
}
下面是表格 View 图像。只要我点击任何表格 View ,我就会收到错误消息。
最佳答案
将 var itemToEdit: PFObject = PFObject() 更改为
var itemToEdit: PFObject?
关于swift - 崩溃 : Can only call -[PFObject init] on subclasses conforming to PFSubclassing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34012011/
何时使用 init、带参数的 init 或 iOS 8 (Swift) 中的便利 init, Objective-C 中的 convenience init 等价于什么? 最佳答案 你的类将有一个必需
我正在阅读这个 First Search Program - Artificial Intelligence for Robotics 算法,我正在阅读它的 Python 代码。在这里,我们创建了一个
我觉得答案很明显,但我一直无法弄清楚,这对我来说似乎是一个反复出现的问题。基本上我想做这样的事情: extension NSData { convenience init(JSONObject
cloud-init 是在首次启动时在虚拟机上执行各种配置的包。您必须使用您的配置配置一个文件,然后将其扔到您的 VM 上,然后对其进行虚拟化。 但它究竟是如何工作的呢?用户数据如何发送到 VM,cl
我目前正在与 CoreOS 打交道,到目前为止,我认为我已经掌握了总体思路和概念。我还没有得到的一件事是执行 cloud-init . 我明白 cloud-init是一个为 CoreOS 做一些配置的
部署项目后,当客户端第一次向 TestServlet 发送请求时,服务器会创建 testServlet 对象,然后调用第一个 init() 方法(init(ServletConfig config))
是否有可能在 convenience init 中以某种方式解包可选 init? convenience init(...) { self.init?(...) ?? self.init() }
使用时 write_files使用 cloud-init,是否可以附加内容?如果是这样,如何? write_files: [ { "path": "/home/user/some-file
我对 Ansible 比较陌生,我创建了一个剧本,可以在“裸”服务器上安装 Tomcat 配置。我想知道如何解决能够更新 init.d 脚本的问题,同时避免在脚本没有更改时在剧本开始时停止服务。这是基
我打算在 iOS 中使用参数调用 init 方法中的默认 init 方法。像这样: -(id)init{ self = [super init]; if (self) {
Objective C 规范(来自 Apple)第 49 页指出每个声明实例变量的类都必须提供一个 init 方法来初始化它们 我的问题 -为什么这是必要的? NSObject 不会为实例初始化 iV
所以我有一个带有指定初始化器的类,它为每个存储的属性取值。我所有存储的属性也有一个默认值,所以我假设这个类有一个默认的初始化。 在我指定的 init 中,我调用 super.init() 问题是,如果
我对此有些困惑: class Person { var name: String var age: Int init(){ name = “Tim”
我有一个带有两个初始化方法的对象。其中一个接受 NSDictionary,另一个接受一大堆 String 变量。我想调用 NSDictionary init,然后从那里将我的字典转换为字符串,然后用我
我正在尝试为我的类创建一个方便的初始化:User。我之前为另一个类(class)做过这个,并且 - 再次创建它 - 我使用了相同的代码,只是我的用户类(class)有所不同。 这是我的用户类: imp
我已经通读了以下秘诀,它展示了一种使用 Google Cloud Endpoints 后端为 AngularJS 前端提供动力的方法: https://cloud.google.com/resourc
本文整理了Java中com.netflix.zuul.init.ZuulFiltersModule.()方法的一些代码示例,展示了ZuulFiltersModule.()的具体用法。这些代码示例主要来
我想实现一个 初始化 下功能 box.once() 在 Tarantool 中只执行一次,但是,只有在 时才对我有用初始化 已成功执行。 问题 : 如何使“onceinit”记录只有在 init 成功
如果在Xcode中创建新的游戏模板项目,则默认GameViewController将使用以下初始化程序实例化游戏场景: let scene = SKScene(fileNamed: "GameScen
我有一个 MKPolyline我要实现的 subblas NSCoding , IE。 @interface RSRoutePolyline : MKPolyline I asked a quest
我是一名优秀的程序员,十分优秀!