如何在解析时从对象中获取ObjectId并迅速将其显示为字符串

问题描述 投票:2回答:3

为什么我自然无法将一个对象的“ 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外)的所有其他字符串列都适用。每次都会引发异常错误。为什么会这样?

ios swift object parse-platform
3个回答
1
投票

使用oneObj.objectId代替您在上面的代码中尝试的内容。

let ObjectIdFromParse = oneObj["objectId"] as! String行更改为

let ObjectIdFromParse = oneObj.objectId as! String


1
投票

Parse documentation on PFObjects开始

objectIdcreatedAtupdatedAt作为属性在每个PFObject上提供,因此您不必使用[""]下标它们,而是通过.objectId.createdAt.updatedAt到达它们在您的对象上。

您也不必强制向下转换为String,因为objectId始终是String(如您所述)。但是,您确实需要拆开可选项(说您知道此objectId存在)。因此,正确的代码行应为:

let ObjectIdFromParse = oneObj.objectId!

0
投票

这个问题到现在已经有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

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.