Parse + Swift," - [Swift._NSContiguousString objectId]:无法识别的选择器发送到实例"错误

时间:2015-12-02 21:44:03

标签: ios swift parse-platform

我正在使用Parse,我有一个PFObject,我用来代表一个" Job"。它工作得很精细,但总是使用setObject:forKey:和objectForKey:而不是访问属性是乏味的。

所以,我决定做一个正确的" PFObject子类。现在,每次拨打对象" objectId"给出了上面无法识别的选择器错误 - 甚至是与我的子类无关的调用。

我创建了我的子类"据我所知(在下面),我在 Parse.setApplicationId:之前调用了Job.registerSubclass():我的AppDelegate。有谁看过这个问题?

import Foundation
import Parse

class Job: PFObject, PFSubclassing {

    @NSManaged var categoryName: String
    @NSManaged var categoryId: String
    @NSManaged var state: String
    @NSManaged var details: String?
    @NSManaged var jobDescription: String
    @NSManaged var location: String
    @NSManaged var dates: [String]
    @NSManaged var images: PFFile?
    @NSManaged var questionSequence: [String]?
    @NSManaged var consumerResponseIndices: [Int]?
    @NSManaged var isPosted: Bool
    @NSManaged var bids: [AnyObject]?

    override class func initialize() {
        struct Static {
            static var onceToken : dispatch_once_t = 0;
        }
        dispatch_once(&Static.onceToken) {
            self.registerSubclass()
        }
    }

    class func parseClassName() -> String {
        return "Job"
    }
}

2 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题 尝试将NSArray/NSDictionary转换为String类型时,您可能会遇到此错误,因此会转为NSContiguousString类型。

您可以查看:

  • 日期
  • questionSequence
  • consumerResponseIndices
  • 出价

看看是否发生了这种情况。

答案 1 :(得分:0)

就我而言,问题是:

if let countryLocale = (notification.userInfo![Constants.CountryLocale]!.firstObject as? String { code }

并用

解决
if let countryLocale = (notification.userInfo![Constants.CountryLocale] as! [AnyObject]).first as? String { code }