我正在尝试以一对多的关系获取对象(用户)的索引。它返回nil。
import Foundation
class Groups : NSObject{
var groupName: String?
var UsersInGroup = [BackendlessUser]()
var ownerId: String?
var objectId : String?
}
func getIndex() {
self.backendless.userService.getPersistentUser()
let user = self.backendless.userService.currentUser
var dataStore = backendless.data.of(Groups.ofClass())
dataStore.findID(
"B52F6BEA-79F8-A58B-FF15-AF840BCB2A00",
response: { (result: AnyObject!) -> Void in
var LookingForGroupJoining = result as! Groups
// LookingForGroupJoining.UsersInGroup.append(user)
let index = LookingForGroupJoining.UsersInGroup.indexOf(user)
print("This is the index number : \(index)")
print("This is the user : \(user)")
print("These are all the values of the UsersInGroup : \(LookingForGroupJoining.UsersInGroup)")
dataStore.save(
LookingForGroupJoining,
response: { (result: AnyObject!) -> Void in
let GroupJoining = result as! Groups
print("Group has been saved: \(GroupJoining.groupName)")
},
error: { (fault: Fault!) -> Void in
print("Server reported an error (1): \(fault)")
})
print("Group has been found: \(LookingForGroupJoining.objectId)")
},
error: { (fault: Fault!) -> Void in
print("Server reported an error (2): \(fault)")
})
}
这是控制台输出
This is the index number : nil
This is the user : <BackendlessUser> {
"__meta" = "{\"relationRemovalIds\":{},\"selectedProperties\":[\"__updated__meta\",\"password\",\"created\",\"name\",\"___class\",\"ownerId\",\"updated\",\"objectId\",\"email\"],\"relatedObjects\":{}}";
created = "2016-03-07 06:06:40 +0000";
email = "test@test.com";
lastLogin = "2016-03-11 04:30:01 +0000";
name = "<null>";
objectId = "4A955ADD-7991-1AF8-FFEF-3754587B2300";
ownerId = "<null>";
updated = "<null>";
"user-token" = "18C87E0E-2BB3-DB1D-FF63-3CD5FE003200";
}
These are all the values of the UsersInGroup : [<BackendlessUser> {
"___class" = Users;
created = "2016-03-07 03:45:05 +0000";
email = "lekan.adeyeri@gmail.com";
name = test;
objectId = "0EB97FF9-FBF1-2E7E-FF30-160BB6CFFC00";
ownerId = "<null>";
password = "<null>";
updated = "2016-03-18 22:33:02 +0000";
}, <BackendlessUser> {
"___class" = Users;
created = "2016-03-07 06:06:40 +0000";
email = "test@test.com";
name = "<null>";
objectId = "4A955ADD-7991-1AF8-FFEF-3754587B2300";
ownerId = "<null>";
password = "<null>";
updated = "2016-03-18 22:33:02 +0000";
}, <BackendlessUser> {
"___class" = Users;
created = "2016-03-06 04:15:27 +0000";
email = "tesbhjbj@ttt.tyy";
name = "<null>";
objectId = "570CD92B-74EB-1325-FF8F-B866CB6CB400";
ownerId = "<null>";
password = "<null>";
updated = "2016-03-18 22:33:02 +0000";
}, <BackendlessUser> {
"___class" = Users;
created = "2016-03-05 04:50:14 +0000";
email = "test@testmail.test";
name = test;
objectId = "A0831585-716E-B027-FF37-539497748400";
ownerId = "<null>";
password = "<null>";
updated = "2016-03-18 22:33:02 +0000";
}, <BackendlessUser> {
"___class" = Users;
created = "2016-03-05 14:54:53 +0000";
email = "test1@testmail.test";
name = test;
objectId = "C8A47476-E5D2-B84D-FF5A-2EB605040400";
ownerId = "<null>";
password = "<null>";
updated = "2016-03-18 22:33:02 +0000";
}]
我正在尝试以一对多的关系获取对象(用户)的索引。它返回nil。
答案 0 :(得分:0)
找到了解决方法
func leavingGroup() {
self.backendless.userService.getPersistentUser()
let user = self.backendless.userService.currentUser
var dataStore = backendless.data.of(Groups.ofClass())
dataStore.findID(
"B52F6BEA-79F8-A58B-FF15-AF840BCB2A00",
response: { (result: AnyObject!) -> Void in
var LookingForGroupJoining = result as! Groups
var groupList = LookingForGroupJoining.UsersInGroup.description
// “Cleaned” groupList of unnecessary data and created groupListCleaned
var groupListCleaned: String = groupList.stringByReplacingOccurrencesOfString("\"", withString: "").stringByReplacingOccurrencesOfString("<BackendlessUser> {", withString: "").stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString("___class=Users;", withString: "").stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).stringByReplacingOccurrencesOfString("},", withString: "").stringByReplacingOccurrencesOfString("]", withString: "").stringByReplacingOccurrencesOfString("}", withString: "").stringByReplacingOccurrencesOfString("[", withString: "").stringByReplacingOccurrencesOfString("created=", withString: "").stringByReplacingOccurrencesOfString("email=", withString: "").stringByReplacingOccurrencesOfString("name=", withString: "").stringByReplacingOccurrencesOfString("objectId=", withString: "").stringByReplacingOccurrencesOfString("ownerId=", withString: "").stringByReplacingOccurrencesOfString("password=", withString: "").stringByReplacingOccurrencesOfString("updated=", withString:"").stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// Converting groupListClean from a string to an array called arrayofUsers, where the arrays values are anything between whitespace, so the string cookie = “chocolate cake hottea” would be an array [“chocolate”, “cake”, “hottea"]
let arrayofUsers: Array = groupListCleaned.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
// Converting arrayofUsers into string, and replacing some characters. I did the filter here instead of groupList because it produced different results, and I preferred these results here.
var groupListClean2: String = arrayofUsers.joinWithSeparator("").stringByReplacingOccurrencesOfString(";", withString: ",")
// Once I’ve cleaned the string completely, I’m turning it into an array again called arrayofUsers2. I’m separating everything with a coma.
var arrayofUsersData: Array = groupListClean2.componentsSeparatedByString(",")
// I’m getting the index number of the current user's objectId in the data. It pulls out the index of one property belonging to one user, in a list of properties belonging to many users.
var indexnumber = arrayofUsersData.indexOf(user.objectId)
var indexnumber2 = indexnumber
var index = 0
// Since objectIds are always in the same location (7 sway from the next), if its less than really 6 (I set 3 to be safe), then its the users index is 0. If its not, then I’ll keep subtracting by 7, and incrementing the index value each time I subtract. Each user can be identified by jumping 7 indexes, this shows me how many times I have to do that jump, the amount of times is where the user is.
if indexnumber2 <= 3 {
index = 0
} else {
repeat {
indexnumber2 = indexnumber2! - 7
index = index + 1
} while indexnumber2 > 3
}
LookingForGroupJoining.UsersInGroup.removeAtIndex(index)
dataStore.save(
LookingForGroupJoining,
response: { (result: AnyObject!) -> Void in
let GroupJoining = result as! Groups
print("Group has been saved: \(GroupJoining.groupName)")
},
error: { (fault: Fault!) -> Void in
print("Server reported an error (1): \(fault)")
})
print("Group has been found: \(LookingForGroupJoining.objectId)")
},
error: { (fault: Fault!) -> Void in
print("Server reported an error (2): \(fault)")
})
}