2016-08-06 5 views
4
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    // Set up the Parse SDK 
    let configuration = ParseClientConfiguration { 
     $0.applicationId = "WhatsTheHW" 
     $0.server = "https://whatsthehw-parse-alan.herokuapp.com/parse" 
    } 
    Parse.initializeWithConfiguration(configuration) 

    let query = PFQuery(className: "Course") 

    query.findObjectsInBackgroundWithBlock {(result: [PFObject]?, error: NSError?) -> Void in 
     for object in result! { 
      // existing objectIds: 1Ja2Hx77zA, 34AF1vKO6f, 5FWlsswxw0 
      if object.objectId == "34AF1vKO6f" { 
       object["studentRelation"] = ["hi", "ih"] 
       object.saveInBackgroundWithBlock{(success, error) in 
        if success == true { 
         print("\(object) saved to parse") 
        } else { 
         print("save failed: \(error)") 
        } 
       } 
      } 
     } 
    } 

    return true 
} 

これは、このタスクを(このコードはAppDelegateに)減らすことができます。Parse iOSでオブジェクトを更新中、[エラー]:オブジェクトが見つかりません

パースダッシュボードでREST APIとコンソールを使用してみましたが、iOS SDKでは動作しませんでした。私は本当に失われたと私だ

let object = PFObject(className: "Course") 
object["name"] = "German" 
object["studentRelation"] = ["a", "b"] 

object.saveInBackgroundWithBlock{(success, error) in 
    if success == true { 
     print("save completed") 
     print("\(object) saved to parse") 
    } else { 
     print("save failed: \(error)") 
    } 
} 

私はprint文から取得していますエラーが、私は単純に、このような新しいオブジェクトを追加している場合、それは動作します

Error Domain=Parse Code=101 "Object not found." UserInfo={code=101, temporary=0, error=Object not found., NSLocalizedDescription=Object not found.} 

ですなぜこれが起こっているのか分かりません。

ありがとうございます。

+0

解析は1/28/17にEOLになります。このエラーを出発点として使用し、もしそうならば、あなたの手を強制して別のBaaSに移動することをお勧めします。 – TheValyreanGroup

+2

こんにちは@TheValyreanGroup。 parse.comはEOLになりますが、parse-server not :)と、Alanはparse-serverではなくparse.comを使用しています。 parse-serverは、parse.comチームによってリリースされたオープンソースプラットフォームです。 https://github.com/ParsePlatform/parse-server –

答えて

2

をこの問題を私のObjectIdのを使用していないです(アクセス権に関連するかもしれませんACL)を保存しようとしています。 [Error]: Object not foundは、オブジェクトへのアクセスがwriteでないユーザーが保存しようとすると印刷されますが、Parse SDKのエラーメッセージは本当に誤解を招くことがあります。

オブジェクトを保存しようとしている解析ユーザーが、実際にという適切な書き込みを持っていることを確認して、構文解析DBのそのオブジェクトにを書き込みます。

簡単な修正はpublic read + writeにアプリ内のデフォルトACLを設定することになります。

let acl = PFACL() 
acl.publicReadAccess = true 
acl.publicWriteAccess = true 
PFACL.setDefaultACL(acl, withAccessForCurrentUser: true) 

は通常、ユーザーの実際の役割に応じたアクセス権を設定したい、しかし、このアプローチには注意してください。だから、より良い選択肢は、PFObjectを作成するときにACLを設定するだけで、オブジェクトを変更できることがわかっているユーザーにはwriteのアクセス権が与えられます。

0

あなたのオブジェクトを見つけて、別のオブジェクトに保存して、ループ外でsaveInBackgroundを実行してください。

あなたのコードは、次のようになります。

var objectToSave : PFObject? 

    let query = PFQuery(className: "Course") 
    query.findObjectsInBackgroundWithBlock {(result: [PFObject]?, error: NSError?) -> Void in 
     for object in result! { 
      if object.objectId == "jMIxdSXNRH" { 
       objectToSave = object 
      } 
     } 


     if objectToSave != nil { 
      objectToSave!["studentRelation"] = ["hi", "ih"] 
      objectToSave!.saveInBackgroundWithBlock{(success, error) in 
       if success == true { 
        print("\(objectToSave) saved to parse") 
       } else { 
        print("save failed: \(error)") 
       } 
      } 
     } 

    } 

私はあなたのようにあなたにそれらを変更してください:)

+0

私はあなたの提案を試みましたが、それでも同じエラーが返されます –

関連する問題