如何从解析中的对象中获取 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

objectIdcreatedAtupdatedAt 作为每个 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 [重复]

从android解析jsonObject并在webservice vb.net中获取它

获取解析行错误的 ObjectId

如何通过它的 objectID 获取核心数据实体?

如何解析 JSON 对象并在表格中显示? [关闭]

如何从对象中获取数据并在html中的元素中分配 - javascript代码[关闭]