안녕에 액세스 할 수 없습니다.ParseLiveQuery 내가 ParseLiveQuery이 포인터 개체를 지원하지 생각 <p>ParseLiveQuery</p>를 통해 내 객체를 가져 오기 위해 노력하고있어 포인터 객체
여기 내 코드가 있습니다. Post.swift
import Foundation
import Parse
class Post: PFObject, PFSubclassing {
@NSManaged var postBy: PFUser?
@NSManaged var postText: String?
@NSManaged var postImg: PFFile?
static func parseClassName() -> String {
return "Post"
}
override class func query() -> PFQuery<PFObject>? {
//1
let query = PFQuery(className: Post.parseClassName())
query.whereKeyExists("objectId")
//2
query.includeKeys(["postBy"])
//3
query.order(byDescending: "createdAt")
return query
}
}
extension Post: FeedCellSupport {
var username:String?{
return postBy?["username"] as? String
}
var userImg:PFFile?{
return postBy?["profileImg"] as? PFFile
}
FeedVC.swif
let liveQueryClient = ParseLiveQuery.Client()
protocol FeedCellSupport {
var username:String?{ get }
var userImg:PFFile?{ get }
var postText: String? { get }
}
class FeedVC: UITableViewController, ShopDetailDelegate {
private var subscription: Subscription<Post>!
//Add friends and me
var postLiveQuery: PFQuery<Post> {
return (Post.query()?
.whereKeyExists("objectId")
.includeKeys(["postBy", "commentBy", "commentBy.commentBy"])
.order(byAscending: "createdAt")) as! PFQuery<Post>
}
var results = [Post]()
override func viewDidLoad() {
super.viewDidLoad()
subscription = liveQueryClient.subscribe(postLiveQuery).handleSubscribe { [weak self] (_) in
// Fetch the objects on subscription to not miss any
self?.fetchObjects()
}.handleEvent { [weak self] (_, event) in
self?.handleEvent(event: event)
}
}
나는 2 가지 질문이 있습니다.
1. ParseLiveQuery가 PFObject를 REST 결과와 같이 반환했습니다.
개체를 처음 가져올 때 올바르게 작동합니다.
나는 findObjectBackground를 통해 username과 userImg 데이터를 얻을 수 있음을 의미합니다.
<Post: 0x6180000b43a0, objectId: w5qcfMCByF, localId: (null)> {
likeCount = 0;
postBy = "<PFUser: 0x6180000f4600, objectId: rgG7XfAYWj, localId: (null)>";
postImg = "<PFFile: 0x618000246ba0>";
postText = nice2MeetYous121;
sell = 0;
}
업데이트 된 이벤트를받은 후 .. 다른 스타일의 PFObject가 있습니다.
<Post: 0x6100000b3020, objectId: w5qcfMCByF, localId: (null)> {
"__type" = Object;
className = Post;
createdAt = "2016-11-19T12:37:30.896Z";
likeCount = 0;
postBy = {
"__type" = Pointer;
className = "_User";
objectId = rgG7XfAYWj;
};
postImg = {
"__type" = File;
name = "92aa66bfdcf5f70d1d277556bbd9d7ca_post.jpg";
url = "https://parsefiles.back4app.com/PlY72cbRxsOIXQ1qbJjaQtudZQU9HA8U2RIg2oE1/92aa66bfdcf5f70d1d277556bbd9d7ca_post.jpg";
};
postText = nice2MeetYous1211;
sell = 0;
updatedAt = "2016-11-21T14:34:11.338Z";
}
Parse LiveQuery가 REST와 같이 반환 되었기 때문에 오류 메시지가 표시됩니다.
2. "fix-object-decode"브랜치를 만들었을 때 REST 스타일이 아닌 PFObject를 반환했습니다. 그러나 또한 포인터 데이터를 직접 검색 할 수는 없습니다.
ios ParseLiveQuery link branch->fix-object-decode
내가 테스트를했다 "수정 - 객체 디코드"지점.
잘 형식화 된 PFObject를 반환했지만 다른 결과가 나타납니다. 내가
<Post: 0x6080000b0800, objectId: w5qcfMCByF, localId: (null)> {
likeCount = 0;
postBy = "<PFUser: 0x6080000e3100, objectId: rgG7XfAYWj, localId: (null)>";
postImg = "<PFFile: 0x60800024c150>";
postText = nice2MeetYous1211;
sell = 0;
}
내가 postText을 변경
가 나는 라이브 쿼리하지만 다른 통해 업데이트 이벤트를 얻었다() findObjectInBackGround를 통해 요청하면그것은 내 원래 PFObject입니다.
<Post: 0x6100000b1be0, objectId: w5qcfMCByF, localId: (null)> {
likeCount = 0;
postBy = "<PFUser: 0x6100000e6900, objectId: rgG7XfAYWj, localId: (null)>";
postImg = "<PFFile: 0x61000025d1f0>";
postText = nice2MeetYous;
sell = 0;
}
는 당신이 see..PFUser 수 있듯이 : 0x6080000e3100 및 PFFile : 0x6100000e6900, PFFile : 0x60800024c150는 PFUser 변경되었습니다 내가 이벤트를 받았을 때
0x61000025d1f0 어쨌든 나는 fetchObject 수 없습니다.
실시간 쿼리 또는 구문 분석 서버 측 문제에 대해이 문제가 있습니까?
캐치되지 않는 예외로 인해 앱 종료 'NSInternalInconsistencyException', 이유 : 'Key "username"에 데이터가 없습니다. 그 값을 얻기 전에 fetchIfNeeded를 호출하십시오. '
fetchIfNeeded 오류가 발생하지 않도록 코드를 추가했습니다.
내 스 니펫 코드는 다음과 같습니다.
extension Post: FeedCellSupport {
var username:String?{
do {
try postBy?.fetchIfNeeded()
} catch _ {
print("There was an error")
}
return postBy?["username"] as? String
}
var userImg:PFFile?{
do {
try postBy?.fetchIfNeeded()
} catch _ {
print("There was an error")
}
return postBy?["profileImg"] as? PFFile
}
지금은하지만 ... 시스템은 미세 말한다 작품 "경고 :. 장기 실행 작업이 주 스레드에서 실행중인"
을 나는 그것이 베스트 웨이 아니라고 생각 ..
누가 날 도와 줄 수 있니?
링크를 공유 하시겠습니까? – nathan
내 의견을 업데이트하십시오. includeKey가 정상적으로 작동하고 있습니다. https://github.com/parse-community/ParseLiveQuery-iOS-OSX/issues/91 –
예. https://github.com/parse-community/ParseLiveQuery-iOS-OSX/issues/30 및 https://github.com/parse-community/parse-server/issues/1686 – nathan