簡體   English   中英

無法通過在iOS中獲取核心數據來獲取正確的int值

[英]Can't get correct int value from fetching core data in iOS

我從核心數據中獲取數據時發現了一個奇怪的問題,我插入到核心數據中的數據是一個Event對象,標題,desc和localTime可以正確顯示。

但是, localUTC是一個int類型的值,例如,我在核心數據中插入了-2,但在獲取后變為-30。 更奇怪的是,在Event類的實例中, localUTC值為-2,但是在UITextField顯示時,它變為-30

我使用的代碼如下:

Event *event = [[utility getAllEvents] lastObject];
NSLog(@"%@", event); // log 1

_eventTitle.text = event.title;
_eventDesc.text = event.desc;
_eventTime.text = [NSString stringWithFormat:@"%@", event.localTime];
NSLog(@"%d", event.localUTC); // log 2
_eventUTC.text = [NSString stringWithFormat:@"%d", event.localUTC];
NSLog(@"%@", event); // log 3
NSLog(@"%d", event.localUTC); // log 4

日志:

2015-01-21 20:13:21.186 EventTest[3695:248822] <NSManagedObject: 0x7fe22a445c60> (entity: Event; id: 0xd000000000200000 <x-coredata://BC13045B-499A-4DE6-828F-3BACCFF56CF0/Event/p8> ; data: <fault>) // log 1: NSLog(@"%@", event); 

2015-01-21 20:13:21.188 EventTest[3695:248822] -30 // log 2: NSLog(@"%d", event.localUTC);

2015-01-21 20:13:21.189 EventTest[3695:248822] <NSManagedObject: 0x7fe22a445c60> (entity: Event; id: 0xd000000000200000 <x-coredata://BC13045B-499A-4DE6-828F-3BACCFF56CF0/Event/p8> ; data: {
    desc = "abcdefg\n\nhhhh\n\nxx\nsd\nd\nfsad\nf";
    localTime = "2015-01-21 08:56:31 +0000";
    localUTC = "-2";
    title = "New event111";
}) // log 3: NSLog(@"%@", event); --NOTICE, the value of localUTC is "-2", but when display, it becomes -30

2015-01-21 20:13:21.189 EventTest[3695:248822] -30 // log 4: NSLog(@"%d", event.localUTC); 

UPDATE

the code Event *event = [[utility getAllEvents] lastObject];

是從NSManagedObject投射的,這是問題嗎? [utility getAllEvents]返回NSManagedObject的NSArray(應該是)。 我是Core Data的菜鳥,現在確定這是否會導致問題。

更新2通過使用以下代碼可解決此問題:

[_eventUTC setText:[NSString stringWithFormat:@"%@", [event valueForKey:@"localUTC"]]];

但我不知道為什么它可以解決問題,有人可以指出嗎?

即使核心數據模型(您的.xcdatamodeld文件)具有諸如Integer 16/32/64之類的屬性,其值仍存儲在NSNumber對象中。 因此,您需要通過NSNumber對象訪問數字值。

如果您仔細查看NSLog(@"%@", event); 您將看到localUTCNSString

localUTC =“ -2”;

在另一個日志語句中,您使用%d 格式說明符 ,它用於整數類型,而不是字符串。

NSLog(@"%d", event.localUTC);

更改為

NSLog(@"%@", event.localUTC);

或者,如果您對整數值感興趣

NSLog(@"%d", [event.localUTC integerValue]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM