1
최근에 코드의 가독성과 청결성에 어려움을 겪었습니다. 다음 메소드는 정상적으로 실행되고 필요한 모든 것을 수행합니다.백그라운드에서 최상의 기술을 파싱하십시오.
/**
Creates a new `Group` and adds the currently logged in user as the `groupOwner`.
- parameter name: The name of the group
- parameter completion: Called when the save request has completed passing back the newly saved `Group`. If an error occured it will be returned and `group` will be `nil`.
*/
static func createNewGroup(name: String, completion:(group: Group?, error: NSError?) ->()) {
// Instantiate our new `Group`
let newGroup = Group()
newGroup.groupName = name
newGroup.groupOwner = User.currentUser()!
newGroup.saveInBackgroundWithBlock { (success, error) in
// There was some problem saving the newGroup so return the error
if let err = error {
completion(group: nil, error: err)
}
// The newGroup was saved OK.
else {
// Now, since we've successfully saved the newGroup, we can append that to our current user.
User.currentUser()!.ownedGroups.append(newGroup)
//
// HERE IS MY QUESTION
//
// Next up is the save the current user since he/she has been modified.
User.currentUser()?.saveInBackgroundWithBlock({ (success, error) in
// If there was some error saving the user, then we should delete the newGroup so it isn't hanging around in the db.
if let err = error {
newGroup.deleteInBackground()
completion(group: nil, error: err)
}
// Everything went OK some return our recently saved newGroup
else {
completion(group: newGroup, error: nil)
}
})
}
}
}
내 질문은 내가 saveInBackgroundWithBlock
와 현재 사용자를 저장해야한다 :
내 질문 arrises 선을 표시 한? 이 방법은 훨씬 더 우아하고 올바른 중첩 된 블록 위가 아닌 것 같다
/**
Creates a new `Group` and adds the currently logged in user as the `groupOwner`.
- parameter name: The name of the group
- parameter completion: Called when the save request has completed passing back the newly saved `Group`. If an error occured it will be returned and `group` will be `nil`.
*/
static func createNewGroup(name: String, completion:(group: Group?, error: NSError?) ->()) {
// Instantiate our new `Group`
let newGroup = Group()
newGroup.groupName = name
newGroup.groupOwner = User.currentUser()!
newGroup.saveInBackgroundWithBlock { (success, error) in
// There was some problem saving the newGroup so return the error
if let err = error {
completion(group: nil, error: err)
}
// The newGroup was saved OK.
else {
// Now, since we've successfully saved the newGroup, we can append that to our current user.
User.currentUser()!.ownedGroups.append(newGroup)
// Save and return
User.currentUser()?.saveInBackground()
completion(group: newGroup, error: nil)
}
}
}
그러나, 어떤 임의의 가장자리 경우가 완료되지 않습니다 백그라운드에서 사용자에 저장 저에 관한 것이다. 그런 다음이 Group
개체가 내 데이터베이스에 걸려있을 것이며 사용자는 다음 번에 앱을로드 할 때 해당 개체를 볼 수 없습니다.
내 두려움이 틀렸거나 본래의 방법으로이 기능을 구성하는 적절한 방법이 있습니까?
네트워킹 클래스에 이러한 메소드가 있으므로 모든 UI가 다음 함수와 별도로 수행됩니다. – random