如何从解析中的对象中获取 ObjectId 并在 swift 中将其呈现为字符串
Posted
技术标签:
【中文标题】如何从解析中的对象中获取 ObjectId 并在 swift 中将其呈现为字符串【英文标题】:How to grab ObjectId from object in parse and present it as string in swift 【发布时间】:2016-01-25 06:51:48 【问题描述】:为什么我无法将来自解析的对象中的“ObjectId”快速呈现为字符串,即使它自然已经是字符串?这是我尝试使用的逻辑:
//MARK: Fetch ObjectId Strings From Parse
func fetchObjectIdString()
let query = PFQuery(className: "Books")
query.whereKey("genreName", equalTo: self.genreName)
query.findObjectsInBackgroundWithBlock (objects, error) -> Void in
if error == nil
if let objects = objects as [PFObject]!
for oneObj in objects
let ObjectIdFromParse = oneObj["objectId"] as! String
let SingleObjectId = SixthBook()
SingleObjectId.objectIdString = ObjectIdFromParse
self.arrayOfObjectId.append(SingleObjectId)
else
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
这适用于我的解析对象的所有其他字符串列,除了 ObjectId。每次都会抛出异常错误。这是为什么呢?
【问题讨论】:
【参考方案1】:使用oneObj.objectId
而不是您在上面的代码中尝试的。
将let ObjectIdFromParse = oneObj["objectId"] as! String
行改为
let ObjectIdFromParse = oneObj.objectId as! String
【讨论】:
【参考方案2】:来自Parse documentation on PFObjects
objectId
、createdAt
和 updatedAt
作为每个 PFObject 的属性提供,因此您不要使用 [""]
为它们下标,而是通过 .objectId
、.createdAt
、@987654328 来访问它们@ 在你的对象上。
您也不需要强制向下转换为字符串,因为 objectId 始终是字符串(如您所述)。但是,您确实需要解开可选项(假设您知道此 objectId 存在)。因此正确的代码行应该是:
let ObjectIdFromParse = oneObj.objectId!
【讨论】:
【参考方案3】:这个问题到现在已经有 4 年了,但也许这个答案也可以帮助其他人。
如果您想存储 .objectID 的代表公共,您应该使用引用该 .objectID 的对象的“uriRepresentation”(URL)。
来自documentation
func managedObjectID(forURIRepresentation: URL) -> NSManagedObjectID?
例如,您有: 迅速 4
do
let entity = try self.context.fetch(fetchRequest())
let entityObj = entity.last as! Any
let uriID = entityObj.objectID.uriRepresentation().absoluteString
catch
print("Error...")
记得在获取 ID 之前先 saveContext(),否则你会得到一个临时 ID。
https://developer.apple.com/documentation/coredata/nsmanagedobjectid/1391691-temporaryid
您可以找到更多:https://developer.apple.com/documentation/coredata/nspersistentstorecoordinator/1468882-managedobjectid
希望对你有帮助。
【讨论】:
以上是关于如何从解析中的对象中获取 ObjectId 并在 swift 中将其呈现为字符串的主要内容,如果未能解决你的问题,请参考以下文章
从javascript中的键和字符串值获取objectId [重复]