2013-01-09 25 views
6

Tôi có NSNumber * year tài sản của NSManagedObject, loại của nó trong mô hình dữ liệu là Integer 16.NSPredicate cho NSNumber tài sản của NSManagedObject

Tôi cố gắng kiểm tra với NSPredicate cho năm nay nhưng không thể tìm thấy đúng.

gì tôi đã cố gắng:

NSPredicate *p = nil; 
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; 
NSNumber *yearNo = [nf numberFromString:term]; 
if (yearNo) { 
    p = [NSPredicate predicateWithFormat:@"(cars.year == %i)", yearNo.intValue]; 
} 

Tôi cũng đã cố gắng:

NSPredicate *p = nil; 
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; 
NSNumber *yearNo = [nf numberFromString:term]; 
if (yearNo) { 
    p = [NSPredicate predicateWithFormat:@"(cars.year == %@)", yearNo]; 
} 

Trong cả hai trường hợp tai nạn ứng dụng.

+1

Hiện chúng tôi yêu cầu hoặc nhật ký sự cố lấy. –

Trả lời

12

Nếu bạn cung cấp thêm chi tiết cho mô hình của mình, chúng tôi có thể giúp bạn.

Nhưng tôi nghĩ vấn đề là do cars. Nếu cars là to-many bạn cần một sửa đổi lần này

[NSPredicate predicateWithFormat:@"ANY cars.year == %@", yearNo]; 
+1

Đoán của tôi là anh ta muốn tìm kiếm các đối tượng 'Xe' với một' năm' đã cho, trong trường hợp đó biến vị ngữ sẽ chỉ là '" year ==% @ ", yearNo'. –

+0

@MartinR Cũng có thể. Thêm câu trả lời của bạn nếu bạn muốn;) –

+0

Vâng, đó là mối quan hệ nhiều. Cảm ơn – Shmidt

7

Như @flexaddicted đã nói, bạn đã không được cung cấp đầy đủ thông tin, ví dụ mà thực thể yêu cầu tìm nạp được thực hiện.

Nếu bạn muốn lấy Car đối tượng với một trao year, vị từ chỉ là

[NSPredicate predicateWithFormat:@"year == %@", yearNo] 
Các vấn đề liên quan