编辑1:我重新构建了ViewControllers,以便更轻松地完成我想要的工作。
编辑2:我在向代码添加注释时意识到主要内容丢失了,另一个函数会覆盖第一个segue。
这个ViewController是创建注释的地方;从这个视图我需要的是将touchMapCoordinates传输到另一个ViewController,这样我就可以将PFGeoPoint保存在一个数组中。
编辑3 经过长时间的工作来理解正在发生的事情并简化代码,我已经根据Swift- variable not initialized before use (but it's not used)得出了最终的结论,我尝试使用的当前方法将不起作用在任何情况下或由于它异步保存的情况。如果有人知道一项工作,那么你已经正式完成了以前没有做过的事情:)。
出现的错误是
在Appdata中声明要在项目中的任何位置使用的子类
import Foundation
import Parse
import MapKit
class MyAnnotation: PFObject, PFSubclassing, MKAnnotation {
// MARK: - Properties
@NSManaged var location: PFGeoPoint
// MARK: - Initializers
init(coordinate: CLLocationCoordinate2D) {
super.init()
self.location = PFGeoPoint(latitude: coordinate.latitude, longitude: coordinate.longitude)
print(location)
}
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
// MARK: - PFSubclassing protocol
static func parseClassName() -> String {
return "AnnotationPins"
}
// MARK: - MKAnnotation protocol
var coordinate: CLLocationCoordinate2D {
return CLLocationCoordinate2DMake(location.latitude, location.longitude)
}
var title:String? ="开始主题"
}
代码将全部异步保存在哪里
} else {
let imageData = UIImagePNGRepresentation(self.galleryCameraImage.image!)
let parseImageFile = PFFile(name: "upload_image.png", data: imageData!)
let boi : MyAnnotation
let textTitleandText = PFObject(className: "AnnotationPins")
textTitleandText["textTopic"] = userTopic.text
textTitleandText["textInformation"] = userText.text
textTitleandText["userUploader"] = PFUser.currentUser()
textTitleandText["imageFile"] = parseImageFile!
textTitleandText["location"] = boi.location
textTitleandText.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if error == nil {
如果有人能提供帮助,我们将非常感激!
答案 0 :(得分:0)
让我们将您的Location data
视为通过segue传输的普通数据。
您可以使用此方法配置将保存位置数据的目标View控制器变量(相同类型)。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//check your segue name
if segue.identifier == "YourSegueIdentifier" {
let destinationVC = segue.destinationViewController as! YourDestinationViewController
destinationVC.locationVariableInDestinationVC = locationVariableInCurrentVC
}
}
以上是通过segue传递数据的最简单方法,您也可以对位置数据使用相同的方法。
希望有所帮助!!
Update: Based on your updated code
将func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {}
移出handleLongPress
功能。当通过segues发生任何导航时,会自动调用PrepareForSegue
函数。
如果您想以编程方式启动segue导航,请为segue分配一个标识符,然后调用self.performSegueWithIdentifier("YourSegueIdentifier", sender: nil)
答案 1 :(得分:0)
如下所示的过度prepareForSegue
方法。
override func prepareForSegue(segue: UIStoryboardSegue, sender:
AnyObject?) {
if segue.identifier == "SegueID" {
let destinationVC = segue.destinationViewController as! DestinationViewController
// Create property in destinationView controller & assign required data from here.
}
}
希望它有所帮助。