相关疑难解决方法(0)

Xcode 8为iOS 10生成损坏的NSManagedObject子类

我最近将我的iOS应用程序项目更新到iOS 10.现在我正在尝试更改我的应用程序的核心数据模型,但Xcode生成的新NSManagedObject子类已损坏.我也尝试修复子类手册,但这不起作用.

Core Data Model的最小工具版本设置为Xcode 7.0,代码生成语言设置为Swift.

这是Xcode生成的代码:

import Foundation
import CoreData
import 

extension Group {

    @nonobjc public class func fetchRequest() -> NSFetchRequest {
        return NSFetchRequest(entityName: "Group");
    }

    @NSManaged public var name: String?
    @NSManaged public var platform: NSNumber?
    @NSManaged public var profiles: NSOrderedSet?

}

// MARK: Generated accessors for profiles
extension Group {

    @objc(insertObject:inProfilesAtIndex:)
    @NSManaged public func insertIntoProfiles(_ value: SavedProfile, at idx: Int)

    @objc(removeObjectFromProfilesAtIndex:)
    @NSManaged public func removeFromProfiles(at idx: Int)

    @objc(insertProfiles:atIndexes:)
    @NSManaged public func insertIntoProfiles(_ values: [SavedProfile], at indexes: NSIndexSet)

    @objc(removeProfilesAtIndexes:) …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject ios10 xcode8

63
推荐指数
8
解决办法
4万
查看次数

@NSManaged做什么?

我在各种场合遇到过这个关键字.我知道它应该做什么.但我真的想要更好地理解它.

我注意到的@NSManaged- 不是基于文档,而是通过重复使用:

  1. 它神奇地取代了键值编码.
  2. 它大致相当于@dynamicObjective-C(我不太了解)
  3. 我需要它继承PFObjectParse SDK.它通常使用KVC从后端读取/写入值.
  4. @NSManaged如果我没有在初始化程序中初始化,那么为任何变量添加前缀将关闭编译器.

正式定义(在核心数据Apple Docs中):

Core Data提供NSManagedObject类的子类中的属性的底层存储和实现.在托管对象子类中的每个属性定义之前添加@NSManaged属性,该属性对应于Core Data模型中的属性或关系.与Objective-C中的@dynamic属性一样,@ NSManaged属性通知Swift编译器将在运行时提供属性的存储和实现.但是,与@dynamic不同,@ NSManaged属性仅适用于Core Data支持.

我从那得到了什么:

使用变量@NSManaged应是从编译时检查豁免的东西.

我已经阅读了关于此事的正式文件和其他各种SO问题:

@synthesize vs @dynamic,有什么区别?

@dynamic使用的常见情况是什么?

我本能地认识到我应该使用它的一些场景.我部分知道它的作用.但我所追求的是对它的作用的更纯粹的理解.

进一步观察:

一个PFObjectParse SDK依赖于Key Value Coding访问它的值.本PFObject提供了以下存取:

objectForKey:

let score = results.objectForKey("descriptionOfResult") 
//returns the descriptionOfResult value from the results object
Run Code Online (Sandbox Code Playgroud)

setObject:forKey:

results.setObject("The results for a physics exam", forKey: "descriptionOfResult") 
//sets the value of …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c ios parse-platform swift

39
推荐指数
1
解决办法
1万
查看次数

使用swift 3和Xcode 8 beta对NSManagedObject进行子类化

我开始尝试使用swift 3和Xcode 8 beta的Core数据.当我尝试从核心数据模型生成NSManagedObject子类并在编辑器菜单中创建NSManagedObject子类...选项时,Xcode 8 beta生成三个文件,其中一个是_COREDATA_DATAMODELNAME_ + CoreDataModel.swift,其中包含以下内容:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
Run Code Online (Sandbox Code Playgroud)

此外,此文件的内容显示两个警告:

Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'
Run Code Online (Sandbox Code Playgroud)

有没有人面临同样的问题?这个新文件的含义是什么?

谢谢

core-data nsmanagedobject swift3 xcode8

19
推荐指数
1
解决办法
2万
查看次数