我正在使用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 }