【发布时间】:2015-06-24 06:19:22
【问题描述】:
我在向 Parse 发送字符串时遇到问题。这是代码停止的行:
我的代码如下所示:
var friends: Array<AnyObject>?
var recipients: NSMutableArray?
var message: String!
var sendMessage:String!
override func viewDidLoad() {
super.viewDidLoad()
sendMessage = message
friends = []
recipients = []
let editButton = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.Plain, target: self, action: "edit")
navigationItem.rightBarButtonItem = editButton
tableView = UITableView(frame: view.bounds, style: UITableViewStyle.Plain)
tableView?.delegate = self
tableView?.dataSource = self
view.addSubview(tableView!)
let sendButton = [UIBarButtonItem(title: "Send", style: .Done, target: self, action: "sendPressed")]
toolbar.frame = CGRectMake(0, self.view.frame.size.height - 46, self.view.frame.size.width, 48)
toolbar.sizeToFit()
toolbar.setItems(sendButton, animated: true)
self.view.addSubview(toolbar)
}
func sendPressed () {
sendMessagetoParse()
}
func sendMessagetoParse(){
let messageString = message
let data = messageString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! as NSData
// NSConcreteMutableData
let file = PFFile(name:message, data:data)
file.saveInBackground()
let sentMessage = PFObject(className:"Messages")
sentMessage["messages"] = file
sentMessage["username"] = PFUser.currentUser()?.username
sentMessage.setObject(self.recipients!, forKey: "recipientIds")
sentMessage.setObject(PFUser.currentUser()!.objectId!, forKey: "senderId")
sentMessage.setObject(PFUser.currentUser()!.username!, forKey: "senderName")
sentMessage.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if (success) {
println("Message sent!")
我想将字符串对象发送到我的解析帐户。我还使用了 Parse 提供的方法,即 dataUsingEncoding(NSUTF8StringEncoding) 但这也返回了相同的错误。关于正确格式或我需要如何修复代码的任何线索?
编辑:
好的,我不再收到错误消息,但我唯一的问题是,一旦我按下“发送”,它就什么也不做。这是我编辑的代码:
函数 sendMessagetoParse(){ 让 messageString = 消息
if messageString != nil
{
let data = messageString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)! as NSData
// NSConcreteMutableData
let file = PFFile(name:message, data:data)
file.saveInBackground()
let sentMessage = PFObject(className:"Messages")
sentMessage["messages"] = file
sentMessage["username"] = PFUser.currentUser()?.username
sentMessage.setObject(self.recipients!, forKey: "recipientIds")
sentMessage.setObject(PFUser.currentUser()!.objectId!, forKey: "senderId")
sentMessage.setObject(PFUser.currentUser()!.username!, forKey: "senderName")
sentMessage.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if (success) {
println("Message sent!")
var alert = UIAlertController(title: "Awesome!", message: "Message was Sent", preferredStyle: UIAlertControllerStyle.Alert);
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil));
//show it
self.navigationController?.popToRootViewControllerAnimated(true)
} else {
println("error")
}
}
}
}
这是来自上一个视图控制器的代码,称为 ConfirmViewController,其中我尝试使用 segue 将文本标签传递到 messageString 到当前视图控制器,称为 FriendsViewController:
override func prepareForSegue(segue: (UIStoryboardSegue!), sender:
AnyObject!) {
if (segue.identifier == "addFriends") {
var mvc = segue!.destinationViewController as!
FriendsViewController;
mvc.sendMessage = messageView.text
}
}
在ConfirmViewController 中设置segue 后,我将sendMessage 设置为等于viewDidLoad 中的消息,如我的第一次编辑所示。
【问题讨论】:
-
会不会是消息为nil
-
我正在使用委托将 uilabel 从另一个视图控制器作为字符串传输 - 我是否需要将值传递给另一个标签?
-
按下发送按钮时是否打印了
error? -
没错,没有打印错误。
-
你的
message是零,检查我的答案
标签: ios parse-platform