Parse+Swift,"-[Swift._NSContiguousString objectId]: unrecognized selector sent to instance"错误



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

因此,我决定制作一个"合适的"PFObject子类。现在,对"objectId"的每一次调用都会产生上面无法识别的选择器错误——甚至是与我的子类无关的调用。

据我所知,我"按书"创建了我的子类(如下),并且在我的AppDelegate中的Parse.setApplicationId:之前调用Job.registerSubclass()。有人看到这个问题了吗?

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"
    }
}

我以前也遇到过同样的问题
在尝试将NSArray/NSDictionary转换为String类型时,可能会出现此错误,因此它将变为NSContiguousString类型

您可以查看:

  • 日期
  • questionSequence
  • 消费者响应指数
  • 投标

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

在我的案例中,问题是:

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

并用解决

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

相关内容

  • 没有找到相关文章

最新更新